您的代码有几个较小的“附带”问题:测试中使用的类名中突然出现“
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__。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)