当实现一个包含多个属性的类(就像下面的玩具示例中一样),处理哈希的最佳方式是什么?
我认为__eq__
和__hash__
应该保持一致,但如何实现一个适合处理所有属性的正确哈希函数呢?
class AClass:
def __init__(self):
self.a = None
self.b = None
def __eq__(self, other):
return other and self.a == other.a and self.b == other.b
def __ne__(self, other):
return not self.__eq__(other)
def __hash__(self):
return hash((self.a, self.b))
我在这个问题上读到元组是可哈希的,所以我想知道像上面示例一样的做法是否明智。它可行吗?
__eq__()
和相关方法中进行比较的元素完全相同的元组使用hash()
(就像您所做的那样),然后您就可以放心使用了。 - Feuermurmel