从copy
文档中:
类可以使用相同的接口来控制它们用来控制酸洗的复制。
[...]
为了让一个类定义它自己的复制实现,它可以定义特殊的方法
__copy__()
和__deepcopy__()
那么是哪一个呢?__setstate__()
和__getstate__()
酸洗时使用, or __copy__()
and __deepcopy__()
?
它的工作原理如下:如果一个类定义了__copy__
, 出于copy.copy
目的优先(同样__deepcopy__
出于目的优先copy.deepcopy
)。如果没有定义这些非常具体的特殊方法,则测试与酸洗和解酸相同的机制(这包括但不限于,__getstate__
和__setstate__
;我在我的“Python in a Nutshell”一书中写了更多关于此的内容( @ilfaraone 仅部分引用)。
__setstate__()
和__getstate__()
。
请注意,副本文档说他们可以使用相同的界面,但他们不一定必须这样做。
请参阅Python in a Nutshell 的摘录,或Python 邮件列表中的此解释。