【发布时间】:2021-03-06 00:19:05
【问题描述】:
用户定义类的实例是可变的,但可散列,即我们可以将它们制成集合或将它们用作dicts 的键。
列表是可变的,但不是可散列的。为什么不呢?
来自Python3 docs 大约 2021 年 3 月 5 日:
作为用户定义类实例的对象可以通过 默认。他们都比较不平等(除了他们自己),他们的 哈希值来自它们的 id()。
为什么不能对列表应用相同的逻辑——即从列表的id() 导出列表的哈希值?不会是列表的id变了吧?
这对什么可以转换为集合或什么可以成为字典中的键有影响。
【问题讨论】:
-
进一步环顾四周,这在很大程度上与Why mutable built-in objects cannot be hashable in Python? What is the benefit of this? 重叠。我犹豫要不要用我的徽章锤来欺骗它,我会把它留给其他人打电话。
-
阅读剩下的问题;它询问不可散列的可变内置函数(如
list)和可散列的可变用户定义类(默认情况下基于id()可散列)之间的区别,就像这个问题一样。重点不同,但基本问题非常相似。 -
@user650654 我已将其标记为重复,但无需删除;这里有一个赞成的答案,重复的问题可以让未来的读者更容易通过搜索找到答案。
标签: python python-3.x