Python

Python クラスで比較演算子をoverloadingする

operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)

a と b の “拡張比較 (rich comparisons)” を行います。具体的には、 lt(a, b) は a < b 、 le(a, b) は a <= b 、 eq(a, b) は a == b 、 ne(a, b) は a != b 、 gt(a, b) は a > b 、そして ge(a, b) は a >= b と等価です。これらの関数はどのような値を返してもよく、ブール値として解釈できてもできなくてもかまいません。拡張比較の詳細については 比較 を参照してください。

operator — 関数形式の標準演算子 — Python 3.10.0b2 ドキュメント
class Result:
    def __init__(self, score1, score2):
        self.score1 = score1
        self.score2 = score2

    def __eq__(self, other):
        return ((self.score1 == other.score1)and 
                (self.score2 == other.score2))

result1 = Result(300, 200)
result2 = Result(300, 400)
result3 = Result(300, 200)

print(result1 == result2)  # False
print(result1 == result3)  # True