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).
--
http://mail.python.org/mailman/listinfo/python-list