【Python3.x】UnboundLocalError::__subclasshook__()メソッドの使い方
__subclasshook__メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
__subclasshook__メソッドは、Pythonの抽象基底クラス(ABC)のメカニズムの一部として、あるクラスが特定の抽象基底クラスの条件を満たす「サブクラスであると見なすべきか」をカスタムで判断するロジックを提供するメソッドです。通常、issubclass()やisinstance()といった関数でサブクラス関係を判定する際に利用されます。このメソッドがTrueを返すと、明示的な継承がなくてもサブクラスと見なされ、Falseを返すとサブクラスではないと見なされます。NotImplementedを返した場合は、通常の継承階層に基づくサブクラス判定に委ねられます。
UnboundLocalErrorクラスは、Pythonでローカル変数が使用される前に初期化されていない場合に発生する組み込みの例外クラスです。このクラスが__subclasshook__メソッドを持っているのは、基底クラスであるExceptionクラスから継承しているためです。UnboundLocalErrorクラス自体は抽象基底クラスとしての特別なサブクラス判定ロジックを必要とせず、このメソッドもNotImplementedを返すことで、通常の継承関係によるサブクラス判定にその役割を委ねています。そのため、UnboundLocalErrorにおける__subclasshook__は、特定の条件に基づいてサブクラス判定をカスタマイズする用途で使われるものではありません。
構文(syntax)
1@classmethod 2def __subclasshook__(cls, C): 3 pass
引数(parameters)
cls, subclass: type
- cls: type: 呼び出し元のクラス
- subclass: type: チェック対象のサブクラス
戻り値(return)
戻り値なし
戻り値はありません