Style question - defining immutable class data members

Aahz aahz at pythoncraft.com
Tue Mar 24 19:11:40 EDT 2009


In article <mailman.1847.1237048379.11746.python-list at python.org>,
Maxim Khitrov  <mkhitrov at gmail.com> 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?

Well, as you can see from reading this whole thread, it can be the source
of some confusion.  Nevertheless, I personally sometimes use the style of
initializing at the class level.  I think it's probably worth creating a
style guide entry for this issue if you're using Python for your
employer.
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"At Resolver we've found it useful to short-circuit any doubt and just
refer to comments in code as 'lies'. :-)"
--Michael Foord paraphrases Christian Muirhead on python-dev, 2009-3-22



More information about the Python-list mailing list