Am 30.08.2012 12:55, schrieb 陈伟:
class A(object):
d = 'it is a doc.'
t = A()
print t.__class__.d
print t.d
the output is same.
You could go even further:
print id(t.__class__.d)
print id(t.d)
which should show you that they are not just equal but identical.
so it means class object's attribute is also the instance's
attribute.is it right?
Yes. This is even useful sometimes:
class Point(object):
x = 0
y = 0
This will cause every Point to have two attributes x and y that have a
default value 0.
Note that setting this attribute on an instance does not change the
class' attribute, just in that that was what confused you. However, if
the attribute references a mutable type (e.g. a list) this can cause
problems because the instance (see id() above) is the same and thus
modifications affect both the class and all instances.
Uli
--
http://mail.python.org/mailman/listinfo/python-list