如果你遇到的是明确提出了在异常的自定义类
__str__(或者
__repr__,如果
__str__没有定义)。或者,例如,一个类
bytes从中返回一个对象
__str__:
class Foo: def __str__(self): return b''str(Foo()) # TypeError: __str__ returned non-string (type bytes)
但就我个人而言,我 从未
见过,我敢肯定没有人会看到。这样做很愚蠢。同样,实施
__str__或边缘案例的愚蠢错误可能会导致另一个错误
Exception。
除此之外,在这种情况下,内置函数通常不会引发异常,因为它是在
Py2和中为所有内置函数定义的
Py3。
对于用户定义的类,如果未在Python 3中定义,则默认
str使用
object.__str__;在Python
2中,如果类是新样式类(从继承
object),则使用它。
如果一个类是旧式的类,我 相信 它是
classobj.__str__用于类和
instance.__str__实例的。
通常,我不会理解这一点,特殊情况还不够特殊。



