setting an attribute
7stud
bbxx789_05ss at yahoo.com
Wed May 16 03:34:58 EDT 2007
"When you bind (on either a class or an instance) an attribute whose
name is not special...you affect only the __dict__ entry for the
attribute(in the class or instance, respectively)."
In light of that statement, how would one explain the output of this
code:
class Test(object):
x = [1, 2]
def __init__(self):
self.x[0] = 10
print Test.__dict__ #{.....'x':[1,2]....}
t = Test()
print t.x #[10, 2]
print t.__dict__ #{}
print Test.__dict__ #{.....'x':[10,2]...}
It looks to me like self.x[0] is binding on an instance whose
attribute name is not special, yet it doesn't affect any __dict__
entry for the attribute in the instance--instead it is affecting a
__dict__ entry for the attribute in the class.
More information about the Python-list
mailing list