2009-12-19 59 views
1

我有一個對象,它定義了一個__deepcopy__方法。我想要一個函數,它會用它給出的方法深度拷貝它而不是,但默認的方式是複製類object的對象。深度複製一個簡單的Python對象

我該怎麼做?我想我可以嘗試編碼,但可能有很多「陷阱」,我不會想到。

我這樣做的原因是因爲我有一個實現了__deepcopy__方法的對象類,並且該方法檢查某種情況,並且在某些情況下它會以某種方式深入複製對象,而在其他情況下它會以默認的object方式進行深度複製。

回答

4

你基本上需要重寫現有的__deepcopy__方法,這意味着該對象的類臨時設置爲不同的東西 - 不管是接受主要取​​決於「__deepcopy__覆蓋」是否需要影響只有一個,「頂級」對象(在這種情況下,kludge可能可以),或者如果圖中有許多對象是你正在複製的,那麼這種情況就非常糟糕。哪個案例獲得?

+0

我想樹中會有多個對象,對不起。另外,我對改變對象類的想法感到害怕! – 2009-12-19 17:55:46