为实例为类的类的实例酸洗

时间:2019-02-10 02:26:12

标签: python class types instance pickle

我有一个其实例为类的类。每个实例都有其自己的名称。创建新类时,可以将该名称添加到封闭模块中,这使我可以pickle.dump它。最初,我没有将名称添加到模块中,但是在顶级类中有一个 reduce 方法。不幸的是,在pickle模块中有一些神秘的代码,它们对type的子类进行特殊处理,并在模块中查找名称,而不是调用reduce。如果可以尝试使用该代码,并且仅在失败后继续使用 reduce 代码,我认为使用reduce会很好。

无论如何,仅添加名称的问题是在pickle.load上,该名称不存在并且加载失败。大概我可以在模块中添加 getattr 来解释名称并创建相应的类,但是我的理解是,并非所有版本的python都支持模块级 getattr

类实例中的 reduce 方法允许通过在pickle.load上重新创建类实例来成功地腌制那些类实例的实例,但是腌制这些类实例本身不起作用。

除了制作一个稍微不标准的pickle模块外,是否有一些合理的解决方案允许酸洗类实例?

0 个答案:

没有答案