direct initialization of class attributes vs. declarations w/in __init__
Diez B. Roggisch
deets at nospam.web.de
Sun Jun 11 18:09:31 CEST 2006
digitalorganics at gmail.com 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:
FOO = 1
BAR = 
def __init__(self, FOO):
self.FOO = FOO
return "FOO: %r\nBAR: %r\n" % (self.FOO, self.BAR)
f1 = Foo(1)
f2 = Foo(2)
meskal:~/Projects/CameraCalibrator deets$ python2.4 /tmp/test.py
BAR: [1, 2]
BAR: [1, 2]
As you can see, the list BAR is shared. And you can also see that
_assigning_ to something like this:
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.
self.__class__.FOO = value
will set class-variables inside a method. Just if you wondered.
More information about the Python-list