19

我知道这些方法用于酸洗/解酸,与 reduce 内置函数无关,但是 2 之间有什么区别,为什么我们需要两者?

4

2 回答 2

31

文档

如果提供,在酸洗时 __reduce__()将不带参数调用,它必须返回一个字符串或一个元组。

另一方面,

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

Guido,这是一个可以清理的区域。

于 2008-09-29T19:41:37.243 回答
9

__reduce_ex____reduce__应该成为但从未成为的。 __reduce_ex__工作方式类似__reduce__,但通过了 pickle 协议。

于 2008-09-29T19:42:58.537 回答