【Python3.x】__class__::__instancecheck__()メソッドの使い方
__instancecheck__メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
__instancecheck__メソッドは、Pythonの組み込み機能として提供され、クラスオブジェクトに所属する特別なメソッドです。これは、あるオブジェクトが特定のクラスのインスタンスであるかどうかを判断する際の動作をカスタマイズするメソッドです。
具体的には、isinstance(オブジェクト, クラス)という組み込み関数を使って型チェックを行う際に、指定されたクラスの内部で自動的に呼び出されます。通常、Pythonはオブジェクトの型階層を辿ってインスタンスかどうかを判断しますが、__instancecheck__メソッドをオーバーライド(再定義)することで、この標準的な振る舞いを変更し、独自の判定ロジックを実装できます。
たとえば、抽象基底クラス(ABC)において、そのクラスを直接継承していないオブジェクトであっても、特定の条件(特定のメソッドを持っているなど)を満たしていれば、そのABCのインスタンスであるとみなすような高度な型チェックを定義する際に利用されます。
このメソッドは開発者が直接呼び出すものではなく、isinstance()関数を通じて間接的に利用されることがほとんどです。柔軟な型システムを構築し、より高度なポリモーフィズムを実現するために重要な役割を果たしています。
構文(syntax)
1class CustomMetaclass(type): 2 def __instancecheck__(cls, instance): 3 return super().__instancecheck__(instance)
引数(parameters)
self, instance, /
- self: 呼び出し元のクラス自身
- instance: 型チェックを行うインスタンス
戻り値(return)
boolean
このメソッドは、指定されたインスタンスがそのクラスのインスタンスであるかどうかに応じて、真偽値(TrueまたはFalse)を返します。