gpt4 book ai didi

python - Pickle 一个对象作为其父类的实例?

转载 作者:行者123 更新时间:2023-12-01 03:36:39 24 4
gpt4 key购买 nike

假设我有以下子类,我用它来临时赋予 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 作为普通 list 进行 pickle,以便当我稍后尝试加载时pickle 文件,我没有收到此缺失类错误?我希望 pickle 文件仅引用内置 list 类型。

最佳答案

我认为您想要做的是 pickle 类实例并将类描述捆绑在 pickle 对象中。 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__()

关于python - Pickle 一个对象作为其父类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com