Style question - defining immutable class data members
Bruno Desthuilliers
bdesth.quelquechose at free.quelquepart.fr
Sun Mar 15 16:06:58 EDT 2009
John Posner a écrit :
> (My apologies if the thread has already covered this.) I believe I
> understand the WHAT in this situation, but I don't understand the WHY
> ...
>
> Given this class definition:
>
> class Cls(object): x = 345
>
> ... I observe the following, using IDLE 2.6.1:
>
>>>> inst = Cls() Cls.x is inst.x
> True
>
>>>> Cls.x += 1 Cls.x is inst.x
> True
>
>>>> inst.x += 1 Cls.x is inst.x
> False
>
> My question is ... WHY does the interpreter silently create the
> instance attribute at this point,
Becaause that's how you create instance attributes in Python. Why do you
think 'self' - that is, a reference to some object - is mandatory in
"methods" (really, functions) arguments list ?
Or do you mean that the existence of a synonym class attribute should be
checked on each instance variable assignement ? This would probably be a
big performance hit, and it would make per-instance method overloading
impossible (remember that OOP is about objects, not classes).
More information about the Python-list
mailing list