2024-04-19 17:27:57 发布
网友
使用对象id作为哈希键(via)是否明智。__hash__)是否能够为一个程序的单个实例散列其他可变对象?使用对象属性会更好,但它们都是可变的,并且可以更改。在
id
__hash__
我在看Sets of instances时想到了这一点,我想知道这是否明智。在
是的,只要您还定义__eq__(大概是__ne__!-)与此一致。听着,没关系,只要你对a==b和a is b完全相同的意思没问题!-)在
__eq__
__ne__
a==b
a is b
对于大多数Python类来说,这是默认行为。不可损坏的是不可损坏的,原因是:它们是可变的集合。在
对于集合来说,根据内容的相等性来建立相等关系(由__eq__()定义)。这一点,以及__hash__()与相等性一致的要求,当然会使__hash__()可变,这对于包含此类对象的集合来说是可怕的。在
__eq__()
__hash__()
所以你可以这样做,但它会让你付出基于内容的平等关系。在
是的,只要您还定义
__eq__
(大概是__ne__
!-)与此一致。听着,没关系,只要你对a==b
和a is b
完全相同的意思没问题!-)在对于大多数Python类来说,这是默认行为。不可损坏的是不可损坏的,原因是:它们是可变的集合。在
对于集合来说,根据内容的相等性来建立相等关系(由
__eq__()
定义)。这一点,以及__hash__()
与相等性一致的要求,当然会使__hash__()
可变,这对于包含此类对象的集合来说是可怕的。在所以你可以这样做,但它会让你付出基于内容的平等关系。在
相关问题 更多 >
编程相关推荐