`copy.deepcopy`是否与Python中的`NamedTuple一起使用?

Tac*_*ics 2 python deep-copy python-3.x

我在文档中看到,有一种__deepcopy__方法可用于扩展deepcopy内置类型之外的行为.但是,NamedTuple(typing模块中的类版本)的文档没有提及任何相关内容.但是因为它提供了哈希和相等测试的默认值,我想知道它是否也提供了深度复制的默认值?

Sha*_*ger 5

NamedTuple没有定义特殊的__deepcopy__处理程序,但它不需要.__deepcopy__只需要覆盖/自定义默认的深度复制行为(只使用pickle特殊方法,__reduce_ex____reduce__); 对于在Python中定义的类(与C扩展类型相反),默认行为通常是正确/完整的.object本身为所有非扩展类型提供有用的默认酸洗行为,假设它们的所有属性本身都是可选择的,例如没有打开的文件对象等.

由于NamedTuple是Python级别,并且没有特殊的复制需求,因此无需实现自定义处理程序.只有当你的某些属性NamedTuple是不可取消的并且不能自己定义时,你才需要自己这样做__deepcopy__.