3

copy文档中:

类可以使用相同的接口来控制它们用来控制酸洗的复制。

[...]

为了让一个类定义它自己的复制实现,它可以定义特殊的方法__copy__()__deepcopy__()

那么是哪一个呢?__setstate__()__getstate__()酸洗时使用, or __copy__()and __deepcopy__()?

4

2 回答 2

7

它的工作原理如下:如果一个类定义了__copy__, 出于copy.copy目的优先(同样__deepcopy__出于目的优先copy.deepcopy)。如果没有定义这些非常具体的特殊方法,则测试与酸洗和解酸相同的机制(这包括但不限于,__getstate____setstate__;我在我的“Python in a Nutshell”一书中写了更多关于此的内容( @ilfaraone 仅部分引用)。

于 2009-09-09T03:33:51.367 回答
1

__setstate__()__getstate__()

请注意,副本文档说他们可以使用相同的界面,但他们不一定必须这样做。

请参阅Python in a Nutshell 的摘录,或Python 邮件列表中的此解释

于 2009-09-08T22:32:50.320 回答