我有一个名为
Transaction
的类,它包含多个属性。如果这些属性中有任何一个匹配,则我希望将这些事务视为重复事务,并且不想在集合中存储重复项。class Transaction:
def __init__(self, a, b):
self.a = a
self.b = b
def __eq__(self, other):
if not isinstance(other, Transaction):
return NotImplemented
return self.a == other.a or self.b == other.b
def __hash__(self):
# TODO
我了解到,如果我们想要在将元素插入集合时避免重复,实现__eq__
和__hash__
都很重要。此外,如果A == B,则它们的哈希值也应该符合契约。
在这种情况下,我如何实现__hash__
,以便在尝试将事务插入集合时,如果它包含属性'a'或'b'的重复值,则被拒绝。
提前感谢!
a
和b
都相同,那么它被视为重复吗? - gold_cya
或b
中有任一一个相同,则被视为相等。 - juanpa.arrivillagax == y and y == z => x == z
)。但是根据你的定义,这并不是这种情况,因为你可以有x.a == y.a and y.b == z.b
,但是z.a != x.a and z.b != x.b
。 - njzk2