0
我想deepcopy的一個類的實例,但我得到一個:副本通過值對象沒有__deepcopy__ ATTR
object has no __deepcopy__ atrribute
錯誤。
該課程被鎖定在.pyd
中,所以無法修改。
有沒有辦法通過價值複製這些對象,而不使用deepcopy?
我想deepcopy的一個類的實例,但我得到一個:副本通過值對象沒有__deepcopy__ ATTR
object has no __deepcopy__ atrribute
錯誤。
該課程被鎖定在.pyd
中,所以無法修改。
有沒有辦法通過價值複製這些對象,而不使用deepcopy?
您必須複製對象狀態。最簡單的方法是使用pickle
模塊:
import pickle
copy = pickle.loads(pickle.dumps(someobject))
這不能保證工作。在一般情況下,所有pickle模塊都會爲你提供實例屬性,並從類引用中恢復a-new實例,並恢復其中的屬性內容。
由於這是一個C擴展對象,如果實例狀態沒有公開給你,並且酸洗沒有被類型明確支持,這也不起作用。在那種情況下,我恐怕沒有別的選擇。
實例狀態沒有公開給我,所以我不得不定義一個從原始(不可複製)對象中複製出相關屬性值的對象類。 – ABM 2013-03-21 17:25:34