我为什么不能Pickle这个物体?

我为什么不能Pickle这个物体?,第1张

我为什么不能Pickle这个物体?

您的代码有几个较小的“附带”问题:测试中使用的类名中突然出现“
Transport”(不是您要定义的类名),将内置标识符践踏

file
为本地时令人怀疑变量(不要那样做-
在这里并没有什么坏处,但是践踏内置标识符的习惯有一天会引起神秘的错误),这种错误
Mock
已经被注意到,默认使用最慢的速度,最脏的腌制协议和文本,而不是腌制文件的二进制文件。

但是,正如@coonj所说,最根本的是缺乏状态控制。一个“普通”类不需要它(因为

self.__dict__
在缺少状态控制且没有其他特性的类中,默认情况下它会被腌制和去腌制),但是因为您要重写
__getattr__
,所以这不适用于您的类。您只需要另外两种非常简单的方法:

def __getstate__(self): return self.__dict__def __setstate__(self, d): self.__dict__.update(d)

它基本上告诉

pickle
您将类
self.__dict__
视为普通类,尽管存在,但仍代表整个实例状态
__getattr__



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5630957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存