【Python3.x】NotImplementedError::__init_subclass__()メソッドの使い方
__init_subclass__メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
__init_subclass__メソッドは、NotImplementedErrorクラスを親として、新しいクラスが定義される際に自動的に実行される特別なクラスメソッドです。このメソッドは、親クラスが継承されるたびに、サブクラスの定義が完了する直前に呼び出されます。
このメソッドの主な目的は、サブクラスが作成されるタイミングで、親クラス側で何らかの処理を実行することにあります。例えば、NotImplementedErrorを継承して独自の例外クラスを定義するような場合、新しいサブクラスの定義が完了する直前に、親クラスであるNotImplementedErrorに実装された__init_subclass__メソッドが自動的に実行されます。この仕組みを利用することで、親クラスは、自身のサブクラスが期待する条件を満たしているか検証したり、特定の初期設定を自動的に行ったりすることができます。
NotImplementedErrorは、本来、サブクラスでの実装が義務付けられている抽象的なメソッドなどに対して、実装忘れを通知するために発生させる例外です。この__init_subclass__メソッドをNotImplementedErrorに実装することで、NotImplementedErrorを継承するすべての新しい例外クラスに対して、特定の属性の有無を確認したり、命名規則を強制したりするなど、一貫した設計ポリシーを適用することが可能になります。これにより、開発者はより堅牢で管理しやすいクラス階層を構築するのに役立てることができます。
構文(syntax)
1class NotImplementedError: 2 def __init_subclass__(cls, **kwargs): 3 super().__init_subclass__(**kwargs)
引数(parameters)
kwargs: Any
- kwargs: Any: サブクラスの初期化時に渡される、任意のキーワード引数。これらの引数は、サブクラスの定義時にメタクラスやクラスデコレータなどが利用するために使われることがあります。
戻り値(return)
戻り値なし
戻り値はありません