自定义Python的`copy`模块如何处理我的对象

Ram*_*hum 3 python copy pickle

copy文档:

类可以使用相同的接口来控制用于控制酸洗的复制.

[...]

为了让类定义自己的副本实现,它可以定义特殊的方法__copy__()__deepcopy__()

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

Ale*_*lli 7

它的工作原理如下:如果一个类定义__copy__,它优先于copy.copy目的(并且同样__deepcopy__优先用于copy.deepcopy目的).如果没有定义这些非常具体的特殊方法,那么就会测试与酸洗和去除斑点相同的机制(这包括但不限于,__getstate____setstate__;我在我的书"Python in a Nutshell"中写了更多关于这一点的文章(其中@ilfaraone仅部分引用).