Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Python3.x】__class__::__init_subclass__()メソッドの使い方

__init_subclass__メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

__init_subclass__メソッドは、クラスが他のクラスによって継承され、新しいサブクラスが定義される際に、そのサブクラスが作成される直前に特定の処理を実行するメソッドです。このメソッドは、親クラスに定義することで、子クラスが生成されるタイミングで親クラス側からサブクラスの振る舞いをカスタマイズしたり、特定の条件を満たしているか検証したりするために利用されます。

具体的には、あるクラスを継承して新しいサブクラスを定義すると、Pythonインタープリタによって自動的にその親クラスの__init_subclass__メソッドが呼び出されます。このとき、cls引数として新しく作成されるサブクラスのオブジェクト自体が渡されます。これにより、親クラスはサブクラスが持つべき特定の属性の存在を確認したり、特定のメソッドが実装されているかを強制したり、あるいは共通のデフォルト値を自動的に設定したりといった、様々な初期化処理を実行できます。

__init_subclass__は、メタクラスを使うことなく、クラス作成時の振る舞いを制御するための強力なフックを提供するため、特にフレームワークやライブラリ開発において非常に有用です。例えば、ユーザーが特定のモデルクラスを定義した際に、自動的にデータベースとのマッピング情報を設定するといったシステムで活用されます。このメソッドをオーバーライドする際は、親クラスの__init_subclass__をsuper().__init_subclass__(**kwargs)のように呼び出すことで、継承チェーン全体の初期化処理が適切に行われるようにすることが重要です。

構文(syntax)

1class ClassName:
2    def __init_subclass__(cls, **kwargs):
3        super().__init_subclass__(**kwargs)

引数(parameters)

cls, **kwargs

  • cls: 新しく作成されるクラス自体
  • **kwargs: サブクラスの作成時に渡される追加のキーワード引数

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ

関連プログラミング言語