假设我使用了以下子类来暂时赋予document.getElementById()
一些额外的方法,
list
然后我做了类似
的事情class MyList(list):
def some_function(self):
pass
现在,在我尝试打开文件
之前,这一切都很好>>> f = MyList()
>>> .. bunch of list stuff ...
>>> cPickle.dump(f,open('somefile','w'))
我收到>>> cPickle.load(open('somefile'))
不存在的投诉。有办法以某种方式
得到MyList
作为普通MyList
发痒,以便我以后尝试加载
pickle文件,我没有得到这个错过的类错误?我希望pickle文件只引用内置的list
类型。
答案 0 :(得分:2)
我认为你想要做的是挑选类实例并捆绑pickle对象中的类描述。 pickle
并没有挑选课程说明,但dill
会这样做。
>>> class MyList(list):
... def some_function(self):
... pass
...
>>> f = MyList()
>>> import dill
>>> dill.dump(f, open('somefile','w'))
>>>
然后在加载时,它才能正常工作......
dude@hilbert>$ python
Python 2.7.12 (default, Jun 29 2016, 12:42:34)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import dill
>>> f = dill.load(open('somefile','r'))
>>> f
[]
>>> type(f)
<class '__main__.MyList'>
>>> g = f.__class__()