[2.2b2]: class variable and classmethod, subclass
{-- Rot13 - Hateme
ungrzr2 at ubatxbat.pbz
Tue Nov 27 00:44:24 EST 2001
In 2.2B2
Inside a class,I did a change to a class variable inside the class'
classmethod. If the variable has not been changed in the subclass before,
the class variable in the subclass of the class is also changed. Is this
behavior intentional or a bug?
There is no such behavior if the change is done in a normal member
method.
The code:
=====
class A:
_test = 'start'
def change(cls, str="changed"):
cls._test = str
print cls, "change:", cls._test
change = classmethod(change)
def val(self):
print self.__class__, "val:", self._test
class B(A):
def val(self):
print self.__class__, "val:", self._test
A().val()
B().val()
A().change("Changed by A 1")
B().val()
A().change("Changed by A 2")
B().val()
B().change("Changed by B")
B().val()
A().change("Changed by A 1")
B().val()
===> output:
__main__.A val: start
__main__.B val: start
__main__.A change: Changed by A 1
__main__.B val: Changed by A 1
__main__.A change: Changed by A 2
__main__.B val: Changed by A 2
__main__.B change: Changed by B
__main__.B val: Changed by B
__main__.A change: Changed by A 1
__main__.B val: Changed by B
More information about the Python-list
mailing list