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

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

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

作成日: 更新日:

基本的な使い方

__new__メソッドは、AttributeErrorクラスの新しいインスタンスを生成するメソッドです。

__new__は、Pythonにおいて、あるクラスの新しいオブジェクトがメモリ上に作成される際に、__init__メソッドよりも先に呼び出される特殊なメソッドです。このメソッドは、インスタンスの生成という、オブジェクト作成の最も初期の段階を担当します。

AttributeErrorは、Pythonプログラムでオブジェクトに存在しない属性(変数やメソッドなど)へアクセスしようとした際に発生する、標準的な例外(エラー)を表すクラスです。例えば、オブジェクトが持っていない名前のプロパティを読み込もうとしたり、存在しないメソッドを呼び出そうとしたりすると、このエラーが発生します。

AttributeErrorクラスにおける__new__メソッドは、そのようなエラー状況が発生した際に、プログラムが扱う具体的なAttributeErrorオブジェクトを新しく作成するために内部的に使用されます。このメソッドによって、AttributeErrorのインスタンスがメモリ上に準備され、その後の__init__メソッドでエラーメッセージなどの初期設定が行われます。

開発者が直接この__new__メソッドを呼び出す機会はほとんどなく、Pythonインタプリタが例外を発生させる際に自動的に利用する、より低レベルな処理の一部です。したがって、このメソッドは、AttributeErrorというエラーオブジェクトを適切に生成するための、Pythonの内部的な仕組みを支える重要な役割を担っています。

構文(syntax)

1class CustomAttributeError(AttributeError):
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)

AttributeError

AttributeErrorクラスのインスタンスを生成します。

関連コンテンツ