說我有一個應用程序列表,描述爲自定義對象。我決定對原始應用程序列表進行深度拷貝,以便我可以擁有一個充當可用應用程序池的列表。要分配應用程序,我隨機選擇池的一個子集,然後在原始列表中找到這些應用程序,以便我可以更新其信息。然後,分配的應用程序將從池中移除。但是,出於某種原因,應用程序不能再在原來的列表中找到:自定義對象列表的深度複製
list1 = [App1,App2,App3,App4,App5]
pool = copy.deepcopy(list1)
num_apps = rand.randrange(0,5)
random.shuffle(pool)
selected_apps = copy.deepcopy(pool[:num_apps])
for app in selected_apps:
locn = list1.index(app)
print locn
上面的代碼實際上將返回一個ValueError在selected_apps一個項目不能被發現。由於我正在製作包含非本地Python對象或其他內容的列表的深層副本,這是否是錯誤?
你是否爲你的App類實現了''__eq__'''方法? 更可能發生的情況是.index方法無法比較兩個App對象,因爲您已經完成了深度複製並且其內存地址已更改,所以這兩個App對象是相同的。 – Necrolyte2
啊,我還沒有嘗試過實施'__eq__'方法。我會研究它,謝謝! –