我正在使用python进行数据分析,并希望找到一种将类的实例保存到文件的好方法,以便稍后可以在保持其属性值的情况下重新加载它。特别是,此类的实例将加载作为其他类的实例的对象,然后执行需要一段时间才能完成的处理器密集型比较。
例如:
import pickle
class MyClass():
def __init__(self):
self.info = OtherClass(option=1)
def pickle(self):
f = file('test_file', 'wb')
pickle.dump(self, f, pickle.HIGHEST_PROTOCOL)
f.close()
def unpickle(self):
f = file('test_file', 'rb')
pickle.load(f)
f.close()
class OtherClass():
def __init__(self, option):
self.property = option * 2
mydata = MyClass(option=5)
mydata.pickle()
然后导入此模块并运行mydata.unpickle()以获取mydata(我还有一个选项,用于查找文件是否在之前被pickle并暂停计算并调用OtherClass实例(如果有)。 现在,如果我这样做,我可以加载mydata,但它不再有mydata.info对象。我的理解是,这是泡菜的一个有意的部分,但有没有办法完全保存mydata,以便我以后可以使用它?
答案 0 :(得分:2)
您对所加载的数据一无所知。
class MyClass():
...
@staticmethod
def unpickle():
with file('test_file', 'rb') as f:
return pickle.load(f)
data = MyClass.unpickle()