__reduce__ 和 __reduce_ex__ 有什么区别?

发布于 2024-07-06 04:45:12 字数 76 浏览 8 评论 0原文

我知道这些方法用于 pickling/unpickling,与 reduce 内置函数无关,但是这两个方法有什么区别,为什么我们需要两者?

I understand that these methods are for pickling/unpickling and have no relation to the reduce built-in function, but what's the difference between the 2 and why do we need both?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

欢烬 2024-07-13 04:45:12

文档

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

另一方面,

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

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

The docs say that

If provided, at pickling time
__reduce__() will be called with no
arguments, and it must return either a
string or a tuple.

On the other hand,

It is sometimes useful to know the
protocol version when implementing
__reduce__. This can be done by
implementing a method named
__reduce_ex__ instead of
__reduce__. __reduce_ex__, when it
exists, is called in preference over
__reduce__ (you may still provide
__reduce__ for backwards
compatibility). The __reduce_ex__
method will be called with a single
integer argument, the protocol
version.

On the gripping hand, Guido says that this is an area that could be cleaned up.

丶情人眼里出诗心の 2024-07-13 04:45:12

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

__reduce_ex__ is what __reduce__ should have been but never became. __reduce_ex__ works like __reduce__ but the pickle protocol is passed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文