挑选一个对象作为其父类的实例?

时间:2016-10-26 21:01:19

标签: python pickle

假设我使用了以下子类来暂时赋予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类型。

1 个答案:

答案 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__()