从超类继承类属性,然后更改子类的值可以正常工作:
class Unit(object):
value = 10
class Archer(Unit):
pass
print Unit.value
print Archer.value
Archer.value = 5
print Unit.value
print Archer.value
导致输出:
10
10
10
5
这很好:Archer 继承了 Unit 的值,但是当我更改 Archer 的值时,Unit 的值保持不变。
现在,如果继承的值是一个列表,浅拷贝效果就会出现,超类的值也会受到影响:
class Unit(object):
listvalue = [10]
class Archer(Unit):
pass
print Unit.listvalue
print Archer.listvalue
Archer.listvalue[0] = 5
print Unit.listvalue
print Archer.listvalue
输出:
10
10
5
5
从超类继承列表时,有没有办法“深度复制”列表?
非常感谢
佐野