最容易用一个例子来说明我想要做的事情:
Class A(object):
someVariable = 0
def __init__(self):
self.someVariable = 1
with open('file.pkl','wb') as pfile:
pickle.dump(self,pfile)
self.someVariable = 2
self = pickle.load('file.pkl')
print self.someVariable == 1
blah = A()
我希望打印True,但我认为self对象在Python中是不可变的。重构我的代码会很痛苦,有没有办法快速实现上述目标?
答案 0 :(得分:0)
你应该挑选存储该类的每个属性的self.__dict__
。
而你所要做的就是去除它。 (正如你所想,它是一个字典。)
答案 1 :(得分:0)
我不确定我是否理解你真正想要的东西,但我猜你试图将一个实例持久化到磁盘上。我的看法是这样的:
class A(object):
some_variable = 0
def __init__(self, value=1):
self.some_variable = value
def save(self, name='file.pkl'):
with open(name,'wb') as pfile:
pickle.dump(self, pfile)
@staticmethod
def load(name='file.pkl'):
return pickle.load(open(name, 'rb'))
然后你可以这样做:
>>> a = A(2)
>>> a.some_variable
2
>>> a.save('foo.pkl')
>>> a = A()
>>> a.some_variable
1
>>> a = A.load('foo.pkl')
>>> a.some_variable
2