我正在尝试深度复制一个类的实例,但我得到了一个:
object has no __deepcopy__ atrribute
错误。
该课程被.pyd
锁定,因此无法修改。
有没有办法按值复制这些对象而不使用深度复制?
答案 0 :(得分:1)
您必须复制对象状态。最简单的方法是使用pickle
模块:
import pickle
copy = pickle.loads(pickle.dumps(someobject))
这无法保证正常工作。在一般情况下,所有pickle模块都为你做的是pickle实例属性,并从类引用中恢复实例a-new并恢复该属性内容。
由于这是一个C扩展对象,如果实例状态没有向您公开,并且该类型未明确支持pickling,则这也不起作用。在那种情况下,我没有其他选择,我担心。