【Python3.x】NameError::__new__()メソッドの使い方
__new__メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
__new__メソッドは、NameErrorクラスの新しいインスタンスを生成するメソッドです。
Pythonのオブジェクト指向プログラミングにおいて、クラスから新しいオブジェクト(インスタンス)を作成する際には、まずこの__new__メソッドが呼び出されます。これは、オブジェクトのメモリ領域を確保し、そのオブジェクト自体を構築する役割を担う特殊なメソッドです。__init__メソッドがインスタンスの初期化を行うのに対し、__new__メソッドはインスタンスそのものを生成します。
NameErrorは、プログラム内で未定義の変数名や関数名が参照された場合に発生する例外を表現する組み込みクラスです。このNameErrorクラスの__new__メソッドは、そのような状況が発生したときに、エラーの詳細情報(どの名前が見つからなかったかなど)を保持するためのNameErrorオブジェクトを生成します。具体的には、エラーメッセージとして表示される文字列などを引数として受け取り、それらの情報を持つ新しいNameErrorインスタンスを作成し、それを返します。
通常、システムエンジニアがこのNameError.__new__メソッドを直接呼び出すことはなく、raise NameError("未定義の変数です")のようにNameErrorクラスをインスタンス化する際にPythonの内部で自動的に実行されます。このメソッドによって生成されたNameErrorインスタンスは、プログラムの実行フローの中で存在しない名前への参照があったことを適切に通知するために利用されます。
構文(syntax)
1def __new__(cls, /, *args): 2 ...
引数(parameters)
cls: type, *args: Any, **kwargs: Any
- cls: type: 新しいインスタンスを作成するクラス
- args: Any: 位置引数
- kwargs: Any: キーワード引数
戻り値(return)
NameError
__new__メソッドは、新しいクラスのインスタンスを生成して返します。