代码改变世界

python修改类属性

2020-11-16 20:02  清风软件测试开发  阅读(1258)  评论(0编辑  收藏  举报

python修改类属性

1,当类属性为不可变的值时,不可以通过实例对象去修改类属性

class Foo(object):
    x = 1.5

foo = Foo()
print(foo.x)         #输出:1.5
print(id(foo.x))     #输出:2400205363696

foo.x = 1.7
print(foo.x)         #输出:1.7
print(id(foo.x))     #输出:2400203142352   和上面的id不一样,表明已经新创建了一个实例属性
print(Foo.x)         #输出:1.5

 

2,当类属性为可变的值时,可以过实例对象去修改类属性

class Foo(object):
    x = [1,2,3]

foo = Foo()
print(foo.x)       #输出:[1, 2, 3]
print(id(foo.x))   #输出:1999225501888

foo.x[2] = 4
print(foo.x)      #输出:[1, 2, 4]
print(id(foo.x))  #输出:1999225501888
print(Foo.x)      #输出:[1, 2, 4]

foo.x.append(5)
print(foo.x)      #输出:[1, 2, 4, 5]
print(id(foo.x))  #输出:1999225501888
print(Foo.x)      #输出:[1, 2, 4, 5]