我正在尝试理解Python中的__str__
方法。
class Test:
def __str__(self):
return 5
t = Test()
print(t.__str__())
在这个方法中,它返回一个整数值,但是print方法可以打印它。
但是,当我尝试使用
print(t)
时,它抛出了错误TypeError: __str__ returned non-string (type int)
。据我理解,
print(t)
也调用了__str__(self)
方法。为什么
print(t.__str__())
不需要进行字符串类型转换呢?
print(t.__str__())
避免了错误,因为在显式调用该方法后,它变成了print(5)
。 - martineaustr(t)
时,由于__str__()
的实现不良,你无法将t
转换为字符串(就像print()
输出值一样),因此同样的原因,print(t)
会返回错误。 - FeRD__str__
方法记录了“[其]返回值必须是一个字符串对象”。 - chepnert.__str__()
可以愉快地返回一个非str
值;明天,它可能会引发异常,但这不会是一个破坏性的变化,因为语言从未定义如果__str__
不返回字符串应该发生什么。 - chepner