我有一個關於Python中的類init函數的查詢。我在試圖創建一個文本冒險遊戲類型的環境,每個房間都有一個「物品」屬性,存儲爲一個列表。我試過如下:Python __init__函數的變量標識 - 任何人都可以解釋嗎?
教室:
def __init__(self,items=[]):
self.items=items
但是我發現這是每一個沒有上開始定義的項目房間不僅得到一個空列表,但相同空的清單。現在,如果我創建了一堆房間並將其中的一個項目添加到其中一個項目中,則該項目會出現在每個房間中。
很容易修復(手動分配一個空的列表到每個房間),但我不明白爲什麼會發生這種情況。我會想象創建空間a會創建一個空的列表a.items,而b房間會創建b.items。但任何人都可以解釋爲什麼這些會是相同的?有沒有一種方法來產生上述函數的默認值,每次創建一個不同的列表?
乾杯,
比利。