在Python中使用对象id作为对象的散列

2024-04-19 17:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

使用对象id作为哈希键(via)是否明智。__hash__)是否能够为一个程序的单个实例散列其他可变对象?使用对象属性会更好,但它们都是可变的,并且可以更改。在

我在看Sets of instances时想到了这一点,我想知道这是否明智。在


Tags: of对象instances实例程序id属性sets
2条回答

是的,只要您还定义__eq__(大概是__ne__!-)与此一致。听着,没关系,只要你对a==ba is b完全相同的意思没问题!-)在

对于大多数Python类来说,这是默认行为。不可损坏的是不可损坏的,原因是:它们是可变的集合。在

对于集合来说,根据内容的相等性来建立相等关系(由__eq__()定义)。这一点,以及__hash__()与相等性一致的要求,当然会使__hash__()可变,这对于包含此类对象的集合来说是可怕的。在

所以你可以这样做,但它会让你付出基于内容的平等关系。在

相关问题 更多 >