【Python3.x】__class__::__format__()メソッドの使い方
__format__メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
__format__メソッドは、オブジェクトの書式指定された文字列表現を生成するために実行されるメソッドです。このメソッドは、Pythonのformat()組み込み関数や、f-string(フォーマット済み文字列リテラル)、またはstr.format()メソッドを使用する際に、内部的に呼び出されます。
具体的には、format(オブジェクト, format_spec)のように呼び出されたり、f-string内で{オブジェクト:format_spec}のように記述されたりした場合に、Pythonの実行環境が自動的にそのオブジェクトの__format__メソッドを呼び出します。ここでformat_specは、出力される文字列の書式(例えば、桁数、小数点以下の精度、中央揃え、日付の表示形式など)を指定するミニ言語の文字列です。
このメソッドは、引数としてformat_spec文字列を受け取り、その指定に基づいて整形された新しい文字列を戻り値として返します。Pythonのすべてのクラスの基底であるobjectクラスに定義されている__format__メソッドのデフォルトの動作は、format_specが空文字列('')の場合にはstr()関数で変換した文字列を返し、それ以外の書式指定が与えられた場合にはTypeErrorを発生させます。
ユーザーが定義するカスタムクラスにおいて__format__メソッドを独自に実装することで、そのクラスのオブジェクトがどのように書式化されるかを柔軟に制御できます。これにより、オブジェクトの値を特定の表示形式で出力したい場合に、プログラムの可読性と保守性を高めることが可能です。
構文(syntax)
1class MyObject: 2 def __format__(self, format_spec): 3 return f"Formatted instance of {self.__class__.__name__} with spec: '{format_spec}'"
引数(parameters)
self, format_spec, /
- self: フォーマット対象のオブジェクト自身
- format_spec: オブジェクトのフォーマット方法を指定する文字列
戻り値(return)
str
このメソッドは、オブジェクトを文字列としてフォーマットした結果を返します。フォーマットの仕様は、呼び出し元のオブジェクトの型や、引数として渡されたフォーマット指定子によって決まります。