En Thu, 15 Mar 2007 09:01:07 -0300, <[EMAIL PROTECTED]> escribió: > I got it to work, but I had to add a check to see if the class > variable had been set.. > class Foo: > baz = None > def __init__(self): > if Foo.baz == None: > Foo.baz = True > initBaz()
This is a different approach. You are using instance initialization (Foo.__init__) to finish class initialization. Foo.__init__ will be called each time you create a Foo instance; that's why you had to check if Foo.baz is None. (BTW, Foo.baz=True is unneeded). The only problem I can see is that the Foo class is not completely initialized until its first instance is created; this may not be a problem in your case. > What exactly is being accomplished by having the init function outside > of the class? If there is no check, wouldn't it just execute every > time an object is instantiated anyway? What I intended was different: ========== C:\TEMP>type foo.py class Foo: baz = None def __init__(self): pass def initFoo(): import baz Foo.baz = baz.Baz() initFoo() C:\TEMP>type bar.py import foo class Bar(foo.Foo): pass C:\TEMP>type baz.py import bar class Baz(bar.Bar): pass C:\TEMP>type test.py import foo,bar,baz print foo.Foo.baz f = foo.Foo() print f.baz b = bar.Bar() print b.baz print baz.Baz.baz C:\TEMP>python test.py <baz.Baz instance at 0x00AD7B20> <baz.Baz instance at 0x00AD7B20> <baz.Baz instance at 0x00AD7B20> <baz.Baz instance at 0x00AD7B20> ========== initFoo is only executed when Foo is imported the first time. Note that you can't do that if > I thought it was a good design, but now I'm not so sure. I'm > untrained, so often I dont know the right way to do things. As I > build this into the libraries, I'll keep an eye on how the code is > developing and go from there. Thanks for the help! Usually Python code is quite concise and straightforward; when I find myself writing things too convoluted, I know it's time to refactor/redesign. (Anyway some things remain not as simple as I'd like :( ) Perhaps you later find the need for a different/better way. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list