我有一个非常复杂的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
有没有人知道如何在类中添加方法并同时保持可选择性?
答案 0 :(得分:0)
你试过这个:
import types, pickle, StringIO
class A(object):
## your code here
pass
a = A()
def printi(self):
print self.i
A.printi = printi ## sorry this must be the class
a.printi()
out = StringIO.StringIO()
pickle.dump(a,out) # will pickle ?