PEP 3101はAdvanced String Formattingを指定します。とりわけ、フォーマット文字列 (例: {:.2f}
) の新しい構文の仕様と、カスタム タイプが独自のフォーマットを制御する方法を定義します。これは、以下を実装することによって行われます。
def __format__(value, format_spec):
# Your code here
文字列フォーマット コードには、変換フラグを含めることができます。例: "{0!r:20}".format("Hello")
、ここで!r
は を意味しconvert the the value to a string using repr()
ます。ただし、__format__
コロンの後の値:
(つまり、format_spec) のみを取得します。その理由 (コードではなく設計上の決定) を知りたいのですが、なぜですか? !
の後にすべてを提供すると、より柔軟になると思います。