スーパークラスからクラス属性を継承し、後でサブクラスの値を変更するとうまくいきます。
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
スーパークラスからリストを継承するときにリストを「ディープコピー」する方法はありますか?
佐野さんありがとうございました