【Python3.x】NotImplementedError::__new__()メソッドの使い方
__new__メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
__new__メソッドは、Pythonにおいてクラスの新しいインスタンスを生成し、メモリを確保する処理を実行するメソッドです。NotImplementedErrorクラスに所属するこの__new__メソッドは、NotImplementedErrorオブジェクトを作成する役割を担っています。
NotImplementedErrorは、上位クラスで定義されたメソッドが、それを継承するサブクラスでまだ具体的な実装が提供されていない場合に発生させる例外です。これは、特定のメソッドがサブクラスによって必ず実装されるべきであることを示す意図で利用されることが一般的です。
Pythonで任意のオブジェクトが生成される際、まず__new__メソッドが呼び出され、そのクラスのインスタンスとなる新しいオブジェクトのメモリ領域を確保し、その新しいオブジェクト自体を返します。その後、__init__メソッドが呼び出され、返されたオブジェクトの初期設定が行われます。
NotImplementedError.__new__メソッドは、その親クラスであるException(またはさらに上位のBaseException)の__new__メソッドの動作を継承しており、NotImplementedErrorクラスのインスタンスを生成する標準的なメカニズムを提供します。このメソッドを直接オーバーライドして特殊な処理を行うことは通常なく、デフォルトの実装によって、例外オブジェクトが適切に生成されることを保証しています。システムエンジニアを目指す初心者の方にとって、この__new__メソッドは、Pythonでのオブジェクト生成の基本的な仕組みを理解する上で重要な要素の一つです。
構文(syntax)
1NotImplementedError("エラーメッセージ")
引数(parameters)
cls: typing.Self, *args: object
- cls: typing.Self: 新しく作成されるクラスのインスタンス
- *args: object: 実際には使用されない追加の引数
戻り値(return)
NotImplementedError
__new__メソッドは、NotImplementedErrorクラスの新しいインスタンスを生成して返します。