【Python3.x】UnboundLocalError::__init_subclass__()メソッドの使い方
__init_subclass__メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
__init_subclass__メソッドは、クラスがサブクラス化されたときに呼び出されるメソッドです。
このメソッドはPython 3.6以降で導入され、あるクラス(基底クラス)が別の新しいクラス(サブクラス)として継承される際に、そのサブクラスが実際に作成される直前に自動的に実行されます。主な目的は、基底クラスの設計者が、自身のクラスを継承するサブクラスに対して、特定の規約を満たしているかを確認したり、必要な属性を強制的に追加したり、サブクラスの作成を監視・登録したりすることです。
たとえば、Pythonの組み込み例外クラスであるUnboundLocalErrorも、他のPythonクラスと同様にこのメソッドを持っています。もしあなたがUnboundLocalErrorを継承して独自のカスタム例外クラスを作成する場合、その新しい例外クラスが定義される瞬間に、UnboundLocalErrorクラス(またはその上位クラスであるBaseExceptionやobject)で定義された__init_subclass__メソッドが自動的に呼び出されます。このメソッドは、引数として新たに作成されるサブクラス自身を受け取ることができ、サブクラスの初期設定や検証を行う強力な仕組みとして機能します。これにより、クラス階層全体の一貫性を保ち、サブクラスの振る舞いをより柔軟に制御することが可能になります。
構文(syntax)
1class MyCustomError(UnboundLocalError): 2 def __init_subclass__(cls, /, **kwargs): 3 super().__init_subclass__(**kwargs)
引数(parameters)
cls: type, **kwargs: Any
- cls: type: このメソッドが呼び出されるクラス自体。
- **kwargs: Any: サブクラスの初期化時に渡される追加のキーワード引数。
戻り値(return)
戻り値なし
戻り値はありません