我有一个非常复杂的类 A 的实例,我希望向它添加一个函数并能够腌制它。我尝试了两种方法,但都不起作用。首先是去类继承,这似乎并没有复制我想要的一切:
import pickle, StringIO
class A:
def __init__(self):
self.i=1
class B(A):
def __init__(self, a):
self = a
def printi(self):
print self.i
a = A()
b = B(a)
out = StringIO.StringIO()
pickle.dump(b,out)
b.printi() # error, cannot find i
另一种策略是直接将新函数添加到实例中。但这不会腌制。
import types, pickle, StringIO
a = A()
def printi(self):
print self.i
a.printi = types.MethodType(printi, a)
a.printi()
out = StringIO.StringIO()
pickle.dump(a,out) # will not pickle
有谁知道将方法添加到类并同时保持可腌制的方法?