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

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

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

作成日: 更新日:

基本的な使い方

__init_subclass__メソッドは、クラスが継承されて新しいサブクラスが定義される際に、親クラス側で特定の処理を実行するメソッドです。Pythonの組み込みエラークラスであるFileExistsErrorに所属するこのメソッドは、FileExistsErrorクラスを継承して新しいカスタムエラークラスが作成される時に呼び出されます。これはPython 3で導入された特殊メソッドの一つで、主にクラスの継承フックとして機能します。

このメソッドを使用することで、親クラスは自身のサブクラスが定義されるタイミングで、そのサブクラスに対して初期設定を行ったり、特定の属性を追加したり、あるいは継承の条件を検証したりすることができます。例えば、すべてのサブクラスに共通のログ機能を自動的に追加する、特定のインターフェースを実装しているかチェックするといった、より高度なクラス設計に役立ちます。

__init_subclass__はclassmethodデコレータを明示的に付けなくてもクラスメソッドのように動作し、作成されるサブクラス自身が引数として渡されます。これにより、親クラスはサブクラスの定義にアクセスし、カスタマイズを行うことができます。FileExistsErrorのような組み込みのエラークラス自身がこのメソッドを明示的にオーバーライドして特別な処理を行うことは通常稀ですが、Pythonのクラスシステムが提供する強力な拡張ポイントの一つとして、すべてのクラスがこのフックの恩恵を受けることができます。これにより、クラスの振る舞いをより柔軟に制御し、再利用可能なコードを構築することが可能になります。

構文(syntax)

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

引数(parameters)

cls, /, **kwargs

  • cls: type: このクラス自身を表す型
  • **kwargs: Any: その他のキーワード引数

戻り値(return)

戻り値なし

戻り値はありません

関連コンテンツ