__reduce__和__reduce_ex__有什么区别?

时间:2008-09-29 19:31:50

标签: python pickle

据我所知,这些方法适用于酸洗/去除,与减少内置函数无关,但2之间有什么区别,为什么我们需要两者兼顾?

2 个答案:

答案 0 :(得分:24)

The docs

  

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

另一方面,

  

了解它有时很有用   实施时的协议版本   __reduce__。这可以通过   实现一个名为的方法   __reduce_ex__代替   __reduce____reduce_ex__,当它   存在,被优先调用   __reduce__(您仍可提供   向后__reduce__   兼容性)。 __reduce_ex__   方法将用单个调用   整数参数,协议   版本

在抓握的手上,Guido says这是一个可以清理的区域。

答案 1 :(得分:4)

__reduce_ex____reduce__应该是的,但永远不会成为。 __reduce_ex__的工作方式与__reduce__类似,但是传递了pickle协议。