我一直在使用pickle.dumps
它来为任意 Python 对象创建哈希,但是,我发现 dict/set 订单没有规范化,因此结果不可靠。
在 SO 和其他地方有几个 相关的 问题,但我似乎找不到使用相同基础的哈希算法(/结果)。我了解自己滚动的基本要求,但显然我更喜欢使用经过测试的东西。__getstate__
__dict__
有这样的图书馆吗?我想我实际上要的是一个确定性地序列化对象的库(使用__getstate__
and __dict__
),以便我可以散列输出。
编辑
为了澄清,我正在寻找与 Python hash
(或__hash__
)返回的值不同的东西。我想要的本质上是任意对象的校验和,这些对象可能是可散列的,也可能不是可散列的。该值应根据对象的状态而有所不同。(我使用“状态”来指代由重新调整的字典,__getstate__
或者,如果不存在,则对象的__dict__
.)