Pythonのクラス初期化関数について質問があります。各部屋に「アイテム」プロパティがあり、リストとして保存されている、テキストアドベンチャーゲームタイプの環境を作成しようとしていました。私は次のことを試しました:
クラスルーム:
def __init__(self,items=[]):
self.items=items
しかし、これで私が見つけたのは、開始時にアイテムが定義されていないすべての部屋が空のリストだけでなく、同じ空のリストを取得することです。多数の部屋を作成し、そのうちの 1 つにアイテムを追加すると、そのアイテムはすべての部屋に表示されます。
簡単に修正できます (すべての部屋に空のリストを手動で割り当てます) が、なぜこれが起こるのかわかりません。部屋 a を作成すると a.items が空のリストとして作成され、部屋 b は b.items が作成されると想像できます。しかし、なぜこれらが同一になるのか、誰でも説明できますか? そして、毎回異なるリストを作成するデフォルト値で上記の関数を生成する方法はありますか?
乾杯、
ビリー。