mrstephengross schrieb: >> class Foo: >> foo = Foo() >> >> You have to live with that. Just do >> Outer.foo = Outer.Parent() >> after your class-statement to achieve the same result. > > Hmmm. Well, I see why that works. It's too bad, though. If I want to > keep all executed code safely within a "if __name__ == '__main__'" > block, it ends up a bit ugly. Then again, I guess this is just an > aspect of python I'll have to get used to. Is there a specific reason > it works this way, by chance?
Well, what would you think python should make of this? class Foo: f = Foo() def __init__(self, argument): pass It can't possibly allow to instantiate an object of a class unless the class creation is finished. Of course it could delay the execution of anything but method definitions. But then the price would be high - loss of generatlity, and for example this weren't possible as well: class Bar: if relative_moon_moisture() > 10: def foo(self): pass else: def bar(self): pass Diez -- http://mail.python.org/mailman/listinfo/python-list