按值对象复制,没有__deepcopy__ attr

时间:2013-03-21 16:58:09

标签: python copy

我正在尝试深度复制一个类的实例,但我得到了一个:

object has no __deepcopy__ atrribute

错误。

该课程被.pyd锁定,因此无法修改。

有没有办法按值复制这些对象而不使用深度复制?

1 个答案:

答案 0 :(得分:1)

您必须复制对象状态。最简单的方法是使用pickle模块:

import pickle

copy = pickle.loads(pickle.dumps(someobject))

无法保证正常工作。在一般情况下,所有pickle模块都为你做的是pickle实例属性,并从类引用中恢复实例a-new并恢复该属性内容。

由于这是一个C扩展对象,如果实例状态没有向您公开,并且该类型未明确支持pickling,则这也不起作用。在那种情况下,我没有其他选择,我担心。