例如,我们重写__str__
方法然后Decimal
以两种不同的方式调用它
from decimal import Decimal
class D(Decimal):
def __str__(self):
return super().normalize().__str__()
num = D('1.0')
print(f"{num}")
print(f"{str(num)}")
输出
1.0
1
但他们都应该输出1
。似乎第一个print
正在打电话,Decimal.__str__
而不是出于D.__str__
某种原因。为什么会发生这种情况以及如何解决该问题?
您还需要覆盖
__format__
(请参阅f 字符串 PEP,搜索__format__
)。打印出来