我有一个类,它定义__str__
以十六进制返回整数值,并__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
. 我究竟做错了什么?