pickle什么时候没能腌制一个实例?

时间:2015-02-04 05:15:51

标签: python instance pickle

我有一个python类,我可以实例化然后pickle。但后来我有了第二个类,继承自第一个类,其实例我不能腌制。 Pickle给了我错误“不能pickle instancemethod”。两个实例都有很多方法。所以,有没有人猜到为什么第一堂课会好坏,但不是第二堂课?我确信你会想要查看代码,但它非常冗长,而且我真的不知道第二类的“冒犯”部分可能是什么。所以我无法展示整个事情,我真的不知道相关部分可能是什么。

2 个答案:

答案 0 :(得分:1)

这里有一个非常广泛的列表,列出了可以和不可以腌制的内容: https://github.com/uqfoundation/dill/blob/master/dill/_objects.py

它列出了python标准库中前15个左右的所有对象,虽然它不是一切,但它也涵盖了标准库中所有主要对象和次要对象。

此外,如果您决定使用dill代替pickle,我会猜测您可能不会遇到酸洗问题,因为dill几乎可以序列化python中的任何东西。

更直接地解决您的问题... pickle通过引用来挑选类,而dill通过引用选择类代码,具体取决于您选择的设置(默认为pickle)代码)。这可以绕过pickle具有的类引用的“查找”问题。

答案 1 :(得分:0)

酸洗根本不会腌制你的类,pickle只适用于数据,如果你试图挑选一个内置方法的类,它根本不起作用。它会出现故障和破碎。

来源:Mark Lutz学习python