Style question - defining immutable class data members

MRAB google at
Sat Mar 14 17:50:59 CET 2009

Maxim Khitrov wrote:
> Very simple question on the preferred coding style. I frequently write
> classes that have some data members initialized to immutable values.
> For example:
> class Test(object):
>     def __init__(self):
>         self.some_value = 0
>         self.another_value = None
> Similar effect can be achieved by defining some_value and
> another_value for the entire class, like so:
> class Test(object):
>     some_value = 0
>     another_value = None
> The advantage of doing this is that the assignments are evaluated once
> and thus the creation of that class is a bit faster. Access is still
> performed through self.some_value and self.another_value. Is there a
> reason to prefer the first style over the second?
In the first case each instance has its own attributes, whereas in the
second case the attributes belong to the class and are thus shared by
all the instances. Which you use depends on whether you want them shared
or not.

More information about the Python-list mailing list