Python类属性
类属性
-
可通过类名访问
-
如果实例没有定义同名的属性,则可以通过实例来访问
-
只有使用类引用来访问
类属性时,才能更新它的值,如果通过实例访问类属性来访问的话,会产生一个实例属性覆盖类的属性,造成意外的后果 -
当通过一个实例访问变量时,其搜索顺序:先搜索实例空间,然后是类,然后是继承树中的基类
class student(object):
foo = 100
if __name__ == '__main__':
test = student()
print "student.foo:",student.foo
print "test.foo:",test.foo
test.foo = 50
print "\n","set test.foo"
print "student.foo:",student.foo
print "test.foo:",test.foo #此时test的foo属性覆盖了类student的属性,访问的是foo的foo属性
del test.foo
print "\n","unset test.foo"
print "student.foo:",student.foo
print "test.foo:",test.foo #因为test.foo被del掉,访问的就是类的数据foo
test.foo += 1
print "student.foo:",student.foo
print "test.foo:",test.foo #此时实例test创建了一个属性foo,其值为类属性foo在加1,
#相当于test.foo = student.foo + 1
# student.foo: 100
# test.foo: 100
# set test.foo
# student.foo: 100
# test.foo: 50
# unset test.foo
# student.foo: 100
# test.foo: 100
# student.foo: 100
# test.foo: 101

浙公网安备 33010602011771号