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