Ah, you've brought me much clarity Diez, thank you. That would explain some "bugs" I've been having...
Diez B. Roggisch wrote: > [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