Python 2 doc说:
从版本2.3开始弃用:改用function(* args,** keywords) apply(函数,参数,关键字)(请参阅解压缩参数列表)。
Pickle模块需要以下语法来定义转储对象的__reduce__
方法:
def __reduce__():
return (<A callable object>, <A tuple of arguments for the callable object.>)
(我知道从__reduce__
返回的元组的长度可以> 2,但必须<= 5。在当前问题的上下文中考虑长度2的情况。)
这意味着无法将关键字参数传递给可调用对象。在Python 2中,我有以下解决方法:
def __reduce__():
return (apply, (<A callable object>, ((<args>,), <kwargs>))
但是,builtins.apply
已在 Python 3 中删除。除了在 Python 3 中实现自己的builtins.apply
版本之外,还有其他选择吗?
答案 0 :(得分:0)
您可以为此使用functools.partial
from functools import partial
def __reduce__():
return (partial(<A callable object>, <kwargs>), ())