Python:保存并加载类定义

时间:2011-01-01 12:33:55

标签: python class pickle

我对使用pickle模块保存和加载对象感兴趣,因为您可以阅读我之前提出的问题: Python: Errors saving and loading objects with pickle module

有人提交:

  

1,另一方面:错误是因为pickle想要加载类Fruits的实例并搜索定义它的类定义,但它没有找到它所以它引发错误

现在我想保存并加载一个类定义,以解决我在前面提到的问题中描述的问题。 非常感谢你!

1 个答案:

答案 0 :(得分:7)

pickle模块保存并加载对象内部状态。代码不是内部状态的一部分,甚至不是类,因此它变得棘手。

显而易见的方法是在字符串中创建整个类定义,pickle该字符串,然后加载它,并执行该字符串的exec()。另一个可能或可能不起作用的选项是拥有一个可以腌制和取消代码的元类,但这样方式更难,而且实际上并没有更好。

然而,出于多种原因,这是一个非常糟糕的主意,我敢打赌,我的声誉很大,因为你没有充分的理由去做。你有99.9%的可能性咆哮错误的树。您正在尝试解决您遇到的问题,因为您选择了错误的解决方案来执行某些操作,现在您正在尝试解决解决方案给您的问题,而不是选择一个可能非常简单的解决方案。

因此,您不仅需要解释当前的问题,还需要解释您尝试解决的大规模用例。然后,我们可以告诉您如何以更好的方式解决该用例。