【Python3.x】__class__::__eq__()メソッドの使い方
__eq__メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
__eq__メソッドは、Pythonにおいて、オブジェクト同士の等価性を比較するための特別なメソッドです。このメソッドは「マジックメソッド」または「特殊メソッド」の一つと呼ばれ、プログラム中で==(等しい)演算子を使って二つのオブジェクトが「等しい」かどうかを判断する際に、内部で自動的に呼び出されます。
Pythonのすべてのクラスの基底となるobjectクラスには、デフォルトの__eq__メソッドが定義されています。このデフォルトの実装では、比較対象の二つのオブジェクトがメモリ上で全く同じ場所を指しているか、つまり同一のオブジェクトであるかどうかを確認します。
しかし、私たちがプログラミングを行う際には、異なるオブジェクトであっても、その「中身」や「値」が同じであれば等しいと見なしたい場面がよくあります。例えば、同じ内容を持つ文字列や、同じ属性値を持つカスタムクラスのインスタンスなどがこれに該当します。このような場合に、開発者は自身のクラスで__eq__メソッドを独自に定義(オーバーライド)することができます。
__eq__メソッドをオーバーライドすることで、例えば特定の属性の値が全て一致する場合に等しいと判断するなど、クラスの目的に応じた独自の等価性比較ロジックを実装できます。このメソッドは、比較の結果としてTrue(等しい)またはFalse(等しくない)の真偽値を返します。これにより、オブジェクトの比較がより直感的になり、プログラムの意図を明確に表現できるようになります。
構文(syntax)
1class CustomObject: 2 def __init__(self, value): 3 self.value = value 4 5 def __eq__(self, other): 6 if isinstance(other, CustomObject): 7 return self.value == other.value 8 return False
引数(parameters)
self, value, /
- self: 比較対象となるオブジェクト自身
- value: 比較する値
戻り値(return)
bool
このメソッドは、自身と指定されたオブジェクトが等しいかどうかを判定し、その結果を真偽値(TrueまたはFalse)で返します。