__reduce__和__reduce_ex__有什么区别?

Moe*_*Moe 16 python pickle

我知道这些方法适用于酸洗/去除,与减少内置函数没有关系,但是2和我们为什么需要两者之间的区别是什么?

Adr*_*zza 26

文档

如果提供,在酸洗时 __reduce__()将调用没有参数,并且它必须返回字符串或元组.

另一方面,

在实施时了解协议版本有时很有用 __reduce__.这可以通过实现一个名为__reduce_ex__而不是的方法 来完成 __reduce__.__reduce_ex__,如果存在,则优先调用 __reduce__(您可能仍然提供 __reduce__向后兼容性).__reduce_ex__ 将使用单个整数参数(协议版本)调用该方法.

在握紧的手上,Guido说这是一个可以清理的区域.


Arm*_*her 5

__reduce_ex____reduce__应该的,但永远不会成为。 __reduce_ex__的工作原理类似,__reduce__但是通过了pickle协议。