在类属性不是可变属性的时候,在实例赋值属性时,是新创建了实例属性,将类属性“隐藏”,删除实例属性后,类属性显示出来:
class Foo(object):
x = 1.5
foo = Foo()
print(foo.x)
foo.x = 1.7
print(foo.x)
print(Foo.x)
del foo.x
print(foo.x)
运行结果:
1.5
1.7
1.5
1.5
在类属性是可变属性的时候,在实例赋值属性时,会影响到类属性的值,所以也不可删除:
class Foo(object):
x = {2003:'poe2'}
foo = Foo()
print(foo.x)
foo.x[2004] = 'valid path'
print(foo.x)
print(Foo.x)
#del foo.x #没有遮蔽类属性所以无法进行删除
运行结果:
{2003: 'poe2'}
{2003: 'poe2', 2004: 'valid path'}
{2003: 'poe2', 2004: 'valid path'}