栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我为什么不能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__



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号