[EMAIL PROTECTED] schrieb: > What's the difference between initializing class variables within the > class definition directly versus initializing them within the class's > __init__ method? Is there a reason, perhaps in certain situations, to > choose one over the other?
You are confusing class variables with instance variables. The former are what you can initialize inside the class-statement. However, they are shared amongst _all_ instances. Consider this little example: class Foo(object): FOO = 1 BAR = [] def __init__(self, FOO): self.FOO = FOO self.BAR.append(FOO) def __repr__(self): return "FOO: %r\nBAR: %r\n" % (self.FOO, self.BAR) f1 = Foo(1) print f1 f2 = Foo(2) print f2 print f1 ------ meskal:~/Projects/CameraCalibrator deets$ python2.4 /tmp/test.py FOO: 1 BAR: [1] FOO: 2 BAR: [1, 2] FOO: 1 BAR: [1, 2] ----- As you can see, the list BAR is shared. And you can also see that _assigning_ to something like this: self.FOO will create an instance-variable. Even if a variable of the same name existed on the class before! Which is precisely the difference between using variable initialization in __init__ and inside the class-statement. BTW, self.__class__.FOO = value will set class-variables inside a method. Just if you wondered. Diez -- http://mail.python.org/mailman/listinfo/python-list