所以,我已经对此进行了大量的研究,看到了各种其他链接并参考了Python文档,但是仍然不太清楚。
也许我在Python中看待类的方式有点错误。
据我所知,字典中的键必须是不可变的。然而,由于默认的哈希实现(我想是这样?),类可以成为字典中的键。既然类是可变的,为什么会出现这种情况呢?
例如,
class C:
def __init__(self):
self.val = 15
self.array = []
c = C()
D = {c: 15}
c.val = 14
c.array.append(15)
print(D[c])
为什么这样可以呢?
list
并定义__hash__
方法,在字典中包含可变对象。此外,将值放入字典后还可以更改哈希值。当然,这是不好的做法。 - ken