类可以使用相同的接口来控制用于控制酸洗的复制。
[...]
为了让类定义自己的副本实现,它可以定义特殊方法
__copy__()
和__deepcopy__()
那是哪一个?在酸洗时使用的__setstate__()
和__getstate__()
,或__copy__()
和__deepcopy__()
?
答案 0 :(得分:7)
它的工作原理如下:如果一个类定义__copy__
,那么它优先于copy.copy
目的(类似地__deepcopy__
优先于copy.deepcopy
目的)。如果未定义这些非常具体的特殊方法,则会测试与酸洗和去除斑点相同的机制(包括但不限于__getstate__
和__setstate__
;我已经写了更多关于此的内容在我的书“Python in a Nutshell”中(@ilfaraone仅部分引用)。
答案 1 :(得分:1)
__setstate__()
和__getstate__()
。
请注意,复制文档说他们可以使用相同的界面,但他们不一定会这样做。
请参阅this excerpt中的Python in a Nutshell或Python邮件列表中的this explanation。