相关疑难解决方法(0)

泡菜和深层镜之间的关系

究竟是什么关系picklecopy.deepcopy?他们分享了哪些机制,以及如何?

很明显这两个是密切相关的操作,并分享了一些机制/协议,但我不能围绕细节.

我发现的一些(令人困惑的)事情:

  1. 如果一个类定义__[gs]etstate__,则会调用它们deepcopy的实例.这让我感到惊讶,因为我认为它们是特定的pickle,但后来我发现Classes可以使用相同的接口来控制用于控制酸洗的复制.但是,没有关于 __[gs]etstate__深度复制时如何使用的文档(如何使用返回的值__getstate__,传递给__setstate__什么?)
  2. 一个天真的替代实现deepcopy将是pickle.loads(pickle.dumps(obj)).但是,这不可能等同于deepcopy',因为如果一个类定义了一个__deepcopy__操作,那么使用这个基于pickle的deepcopy实现就不会调用它.(我还偶然发现了一个声明,即深度复制比pickle更普遍,并且有许多类型是深度可复制的,但不是pickleable.)

(1)表示共性,而(2)表示pickle和之间的差异deepcopy.

最重要的是,我发现了这两个相互矛盾的陈述:

copy_reg:pickle,cPickle和copy模块在pickle /复制这些对象时使用这些函数

复制模块不使用copy_reg注册模块

对此,一方面,是之间的关系/共性的另一个指示pickledeepcopy,而在另一方面,有助于我的困惑......

[我的经验是使用python2.7,但我也很感激有关python2和python3之间的pickle/deepcopy差异的任何指示]

python pickle deep-copy python-2.x

21
推荐指数
2
解决办法
3718
查看次数

标签 统计

deep-copy ×1

pickle ×1

python ×1

python-2.x ×1