我认为这是预期的行为,但我想检查并可能找出原因,因为我所做的研究是空白的
我有一个函数可以提取数据,创建自定义类的新实例,然后将其附加到列表中。该类仅包含变量。
然后我使用协议(protocol) 2 作为二进制将该列表 pickle 到一个文件中,稍后我重新运行脚本,从我的源中重新提取数据,我有一个包含我的自定义类实例的新列表,为了测试我保留了数据与源数据相同。
重新加载 pickle 文件
现在当我做一个:
print source_list == pickle_list
这总是返回 False
,我不知道为什么,如果我打印列表或查看结构,它们看起来完全一样。
任何想法都会很棒,这是我需要整理的最后一点。
最佳答案
您的类可能没有定义有意义的 __eq__
,因此正在比较对象标识。由于从 pickles 加载的类与生成列表中的对象不同(即使它们具有相同的数据),您得到 False
。
关于Python pickle : pickled objects are not equal to source objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9530193/