クラスの特殊メソッド in演算子を使う時 __contains__

Pythonのクラスにおいて、in 演算子を使用する際にオブジェクトの挙動をカスタマイズするための特殊メソッドとして、__contains__ メソッドを定義できます。このメソッドを実装することで、in 演算子を使ってオブジェクトが特定の要素を含んでいるかどうかを評価できます。

__contains__ メソッドは、2つの引数を受け取ります。第一引数 self はオブジェクト自体を参照し、第二引数 item は検査する要素です。このメソッドは、in 演算子を使って要素の存在をチェックする際に呼び出されます。

以下は、__contains__ メソッドを使ってカスタムクラス内で in 演算子をカスタマイズする例です:

python
class MyContainer: def __init__(self, items): self.items = items def __contains__(self, item): return item in self.items # インスタンスを作成 my_container = MyContainer([1, 2, 3, 4, 5]) # `in` 演算子を使って要素の存在をチェック result1 = 3 in my_container result2 = 6 in my_container print(result1) # 結果: True print(result2) # 結果: False

この例では、MyContainer クラス内に __contains__ メソッドが定義されており、このメソッドはリスト内に要素 item が存在するかどうかをチェックします。3 in my_container のように in 演算子を使用すると、__contains__ メソッドが呼び出されて要素の存在を確認し、True または False を返します。

__contains__ メソッドを実装することで、カスタムクラスのオブジェクトを in 演算子で使用して、要素の存在をチェックすることができます。この方法は、カスタムコンテナ型やデータ構造を作成する際に非常に役立ちます。