我正在對一個實例變量進行一些計算,之後完成了,我想醃一下類實例,這樣我就不必再做計算了。下面一個例子:Python pickle實例變量
test.compute(6)
import cPickle as pickle
class Test(object):
def __init__(self, a, b):
self.a = a
self.b = b
self.c = None
def compute(self, x):
print 'calculating c...'
self.c = x * 2
test = Test(10, 'hello')
test.compute(6)
# I have computed c and I want to store it, so I don't have to recompute it again:
pickle.dump(test, open('test_file.pkl', 'wb'))
後,我可以檢查,看看有什麼test.__dict__
是:
>>> test.__dict__
{'a': 10, 'c': 12, 'b': 'hello'}
我認爲這是什麼會得到醃;然而,
當我去加載類的實例:
import cPickle as pickle
from pickle_class_object import Test
t2 = pickle.load(open('test_file.pkl', 'rb'))
我看到這個在shell:
calculating c...
這意味着我沒有鹹菜c
,我在計算過程中再次。
有沒有辦法泡菜test
我想怎麼做?所以我不必再次計算c
。我看到我可以醃製test.__dict__
,但我想知道是否有更好的解決方案。另外,我對這裏發生的事情的理解很薄弱,所以對發生的事情發表任何評論都會很棒。我已閱讀__getstate__
和__setstate__
,但我不知道如何在這裏應用它們。