向python类添加方法,同时保留可拾取性
我有一个非常复杂的类a的实例,我希望向它添加一个函数并能够对其进行pickle。我试过两种方法,都不管用。第一个是类继承,它似乎没有复制我想要的一切:向python类添加方法,同时保留可拾取性,python,inheritance,instance,pickle,Python,Inheritance,Instance,Pickle,我有一个非常复杂的类a的实例,我希望向它添加一个函数并能够对其进行pickle。我试过两种方法,都不管用。第一个是类继承,它似乎没有复制我想要的一切: 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.
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
是否有人知道如何将方法添加到类中并同时保持其可拾取性?您是否尝试过以下方法:
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 ?