小编col*_*pop的帖子

为什么包含不可散列类型的元组是不可散列的?

例如,元组(1,[0,1,2]). 我从设计的角度理解为什么;如果元组仍然是可散列的,那么通过将任何不可散列类型包装在元组中来使其可散列将是微不足道的,这会破坏可散列性的正确行为,因为您可以更改对象的值而不更改元组的散列值。但是,如果元组不可散列,那么我不明白是什么使对象可散列——我认为它必须已经实现__hash__(self),而元组确实如此。

根据我看过的其他答案以及测试示例,似乎这样的对象不可散列。似乎明智的行为是调用tuple.__hash__()其__hash__组件对象,但我不明白从实现的角度来看这是如何工作的,例如,我不知道字典在它仍然是类型时如何将其识别为不可散列的类型tuple 和 tuple 仍然定义__hash__.

python

5
推荐指数
1
解决办法
1090
查看次数

标签 统计

python ×1