重複の可能性:
Python の「最小の驚き」:
オブジェクト間で理由もなく共有される可変デフォルト引数ディクショナリ?
class Player():
zones = {}
def __init__(self):
self.zones['hand'] = []
def InitHand(self):
for a in range(5):
self.zones['hand'].append(a)
lst = []
lst.append(Player())
lst.append(Player())
lst[0].InitHand()
print lst[1].zones['hand']
これは「[0、1、2、3、4]」を出力しますが、0番目の要素のみを初期化しました...以下のようにそれらを配列に変更すると問題が解決しますが、私の人生では、これがなぜなのかわかりません起こります。
class Player2():
zones = []
def __init__(self):
self.zones = []
def InitHand(self):
for a in range(5):
self.zones.append(a)
lst = []
lst.append(Player2())
lst.append(Player2())
lst[0].InitHand()
print lst[1].zones
これは期待どおりに「[]」を出力します