目前我使用的複製模塊來創建一些對象,我有一個副本。的Python:複製對象與copy.deepcopy或寫我自己的副本
在特定條件(經常發生),我需要創建原始對象的可能若干份,然後分別修改他們每個人的(所以爲什麼我使用複印件)。
該對象有各種數據類型(列表,整數,字符串,其他類)的幾個實例,並且副本需要具有相同的值,但我不確定是否會更快地調用copy.deepcopy(),或做類似
def copy(self, other): other.prop1 = self.prop1 other.prop2 = self.prop2 other.prop3 = self.prop3
有沒有人遇到這個問題,然後決定最好使用複製模塊,因爲這將是比任何東西大多數人能想出更快?
PS:上面的代碼將無法正常複製的可變對象,而我提到的「其他類」。也許這表明deepcopy是最安全(最快)的路線?
如果任何PROP1,PROP2或prop3的是可變的(即列表,字典,集,對象等,而不是爲int,元組,浮點型,frozenset),那麼你具有上面什麼會導致一個共享對象,並可能導致在bug中。 'a = [1,2,3]; b = a;在b.append(4);打印了''中[1,2,3,4]' – lambacck
是什麼樣的對象它的結果嗎?什麼是副本?在Python中,與其他引用語義語言一樣,通常通過編寫算法來避免值複製,從而解決值複製問題。 –
上述函數的正確名稱是'shallow_copy'。 –