我需要计算一个“哈希值”,以便我能够唯一地识别一个对象,包括它的内容和父类。
通过比较这些“哈希值”,我希望能够确定对象自上次扫描以来是否发生了更改。
我已经找到了很多关于如何使对象可哈希的示例,但是关于如何计算父类的哈希值却不多。
需要注意的是,比较是在不同的执行期间进行的。我之所以这么说是因为我认为应该比较对象的
我想过使用inspect,但我担心效率可能不是很高,而且如果对象的父类继承自另一个类,我也不太确定它会如何工作。
如果我可以访问实例和类代码存储的实际内存原始数据,那么我可以计算出其哈希值。
有什么想法吗?
通过比较这些“哈希值”,我希望能够确定对象自上次扫描以来是否发生了更改。
我已经找到了很多关于如何使对象可哈希的示例,但是关于如何计算父类的哈希值却不多。
需要注意的是,比较是在不同的执行期间进行的。我之所以这么说是因为我认为应该比较对象的
id()
,因为对象的id/地址可能在不同的执行期间有所不同。我想过使用inspect,但我担心效率可能不是很高,而且如果对象的父类继承自另一个类,我也不太确定它会如何工作。
如果我可以访问实例和类代码存储的实际内存原始数据,那么我可以计算出其哈希值。
有什么想法吗?
__dict__
属性的哈希值。我认为在这里考虑其类别并不重要。 - lucasnadaluttifoo
的Foo类
实例,并执行foo.bar = 1
,那么hash(foo)
将生成一个值,在你执行foo.bar = 2
之后仍然保持不变。OP想要检测这种更改。 - lucasnadaluttihash(repr(obj.__dict__))
。 - TemporalWolfrepr
不可靠,因为它不会按固定顺序给出键,也不会在对象可能包含有序键的字典中给出有序键。 - lucasnadalutti