我被告知,如果一个对象的
以下是示例:
这个程序会产生以下结果。
__str__
方法没有被创建,但是__repr__
已经被创建,那么打印该对象将调用__repr__
。这似乎对于普通类来说是正确的,但是当我在Exception的子类上尝试时,奇怪的是__repr__
不会被调用,有人能解释一下为什么吗?以下是示例:
class BoringError(Exception):
def __init__(self):
self.purpose = "Demonstration"
self.boringLevel = 10
def __repr__(self):
return "I'm a message for developer"
try:
if 1 != 2:
raise BoringError
except BoringError as e:
print(e.boringLevel)
print(e)
class Tree:
def __repr__(self):
return "I love water"
AVL = Tree()
print(AVL)
这个程序会产生以下结果。
10
I love water
不要使用
10
I'm a message for developer
I love water
e.__str__
虽然被定义了,但它只是指向了Exception.__str__
,而不是指向BoringError.__str__
。 - chepnerprint(e)
callsprint(e.__str__())
notprint(e.__repr__())
- Holloway