在一个模块中,我有一个类,它需要一个函数作为其参数之一:
class Foo():
def __init__(self, fun):
self.fun = fun
def call_fun(self, arg):
self.fun(arg)
在另一个模块中,我有几个函数,我最终在创建此类的对象时将它们作为参数传递。我以以下方式绑定值以轻松自定义功能:
def sample_function(value):
return (lambda arg: arg.effect(value))
初始化 Foo 对象时,我传递如下值:
foo = Foo(sample_function(5))
后来,我想搁置一些对象,包括 Foo 对象,这很快就证明是不可能的(因为 pickle 模块返回 'TypeError: can't pickle function objects')。我完全了解 pickle 序列化机制的局限性,并且我意识到为什么无法对这些对象进行酸洗。相反,我想重新设计我的课程,或使用其他序列化方式。如何重新设计它以便我可以搁置 Foo 对象,同时保留它们的属性?