__str__
整数値を 16 進数で返すように定義するクラス__format__
と、ユーザーの形式仕様でフォーマットされた値を返すように定義するクラスがあります。
class MyClass:
def __init__(self, value: int):
self._value = value
def __str__(self):
return '{:04X}'.format(self._value)
def __format__(self, format_spec):
return format_spec.format(self._value)
だから私は期待します:
'{:04X}'.format(MyClass(10)) == '000A'
と
str(MyClass(10)) == '000A'
しかし、str.format
呼び出しはフォーマット仕様を返すだけです04X
. 私は何を間違っていますか?