【发布时间】:2021-03-11 12:35:44
【问题描述】:
我想知道是否有可能在不提供 MyClass 代码的情况下以某种方式正确读取 pickle 文件。
import pickle
class MyClass:
def __init__(self, n):
self._n = n
def give_vec(self):
return [1 for _ in range(self._n)]
if __name__ == '__main__':
m = MyClass(30)
with open('test.pickle', 'wb') as p:
pickle.dump(m, p)
假设我们已经运行了上面的代码,现在启动一个 python 解释器并尝试以下操作
>>> import pickle
>>> p = open('test.pickle', 'rb')
>>> a = pickle.load(p)
这样我们就不会得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Can't get attribute 'MyClass' on <module '__main__' (built-in)>
这个想法是提供一个有一些接口而不指定确切类的泡菜
【问题讨论】:
标签: python python-3.x serialization pickle