【发布时间】:2011-04-16 18:56:13
【问题描述】:
我编写了一个类,它的.__hash__() 实现需要很长时间才能执行。我一直在考虑缓存它的哈希,并将其存储在像._hash 这样的变量中,所以.__hash__() 方法将简单地返回._hash。 (这将在 .__init__() 的末尾或第一次调用 .__hash__() 时计算。)
我的理由是:“这个对象是不可变的 -> 它的哈希永远不会改变 -> 我可以缓存这个哈希。”
但现在这让我想到:你可以对 any 可哈希对象说同样的话。 (除了以哈希为 id 的对象。)
那么有没有理由不缓存对象的哈希,除了哈希计算非常快的小对象?
【问题讨论】: