将对象id用作散列键(通过.__hash__)以便能够为程序的单个实例散列其他可变对象是明智的吗?使用对象属性会更好,但它们都是可变的并且可以改变.
在查看实例集时,我想到了这一点,我想知道它是否明智.
对于大多数Python类,这是默认行为.不可动摇的是不可取的,原因很简单:它们是可变的集合.
对于集合,__eq__()基于其内容的相等性具有相等关系(由其定义)是切实可行的.这个,以及要求__hash__()平等的要求,当然会使__hash__()可变,这对包含这些对象的集合来说是可怕的.
所以你可以这样做,但它会花费你基于内容的平等关系.
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |