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

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

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

作成日: 更新日:

基本的な使い方

__new__メソッドは、Pythonの組み込み例外であるSystemErrorクラスの新しいインスタンスを生成するメソッドです。SystemErrorは、Pythonインタープリタ自体が内部的に重大な問題、例えばシステムライブラリの不具合や不正なメモリ状態など、回復が困難な状況に直面した際に発生する例外を表します。

この__new__メソッドは、SystemErrorオブジェクトがメモリ上に作成される際に、__init__メソッドによる初期化よりも前に、最も最初に実行されます。その主な役割は、新しいオブジェクトを生成するためのメモリ領域を確保し、そのオブジェクト自体の構築を行うことにあります。つまり、SystemErrorのインスタンスという「箱」を最初に作り出す工程を担っています。

通常、システムエンジニアがPythonプログラムを開発する際に、このSystemError.__new__メソッドを直接呼び出すことは稀です。多くの場合、Pythonインタープリタが内部でエラーを検出し、SystemErrorを発行する必要があると判断した際に、自動的にこのメソッドを呼び出して適切なSystemErrorインスタンスを生成します。

このメソッドは、SystemErrorのコンストラクタに渡されるであろうエラーメッセージなどの引数を受け取り、それらを用いて新しい例外オブジェクトを構築し、返します。生成されたインスタンスは、その後にSystemError.__init__メソッドによって初期化され、具体的なエラー情報が設定されます。__new__メソッドは、このような重要な例外オブジェクトが正しく生成されるための基盤となる、Pythonのオブジェクトモデルにおける不可欠な要素です。

構文(syntax)

1class SystemError:
2    def __new__(cls, *args, **kwargs):
3        return super().__new__(cls, *args, **kwargs)

引数(parameters)

cls: type, *args, **kwargs

  • cls: type: 新しいインスタンスを作成するクラス
  • args: tuple: 位置引数
  • kwargs: dict: キーワード引数

戻り値(return)

SystemError

SystemErrorクラスの新しいインスタンスを返します。

関連コンテンツ