1
我現在正在學習python中的類。如果我的語言有點草率,我很抱歉,但我仍然在努力理解課程是如何運作的。在Python中,如何在初始化時將每個類的新實例添加到列表中?
在通過我自己的一些項目工作時,我經常發現自己想要在初始化時添加一個對象到一個列表中,以便我可以跟蹤該類型的所有對象。我一直在努力做到這一點通過以下方式:
class My_Class(object):
Object_List=[]
def __init__(self):
Object_List.append(self)
但是,從我所知道的,「_ _init _ _」組曲沒有對象列表中它的命名空間。如果這是正確的,這似乎是有道理的,因爲函數具有自己的名稱空間。然而,問題是上述代碼不起作用。我似乎無法將我的對象添加到全局定義的列表中。
任何人都可以提出另一種方式,我可以完成相同的事情,並最終創建了我創建的所有My_Class對象的列表?
嘗試'self.Object_List.append(個體經營)'。 'Object_List'是類的一個屬性,在這種情況下,你需要通過類實例來訪問它。 –
@TomDalton不會讓'Object_List'成爲一個實例變量嗎? –
如果你還沒有在類級別定義它(通過'Object_List = []',那麼是的。但是,因爲你*有*定義它在類級別,並且因爲'append'不是一個賦值操作(即使它看起來像'寫'它真的是變量查找,然後是方法調用),那麼'self.Object_List'將找到類級變量並對其進行修改。如果您有一個類級變量wasn'列表,例如一個字符串,然後執行'self.my_string ='foo',會創建一個新的實例級別的變量,這會影響同名的類級別變量。 –