我有以下代码从教程:
class Ex(Exception):
def __init__(self,msg):
Exception.__init__(self,msg+msg)
self.args=(msg,)
try:
raise Ex('ex')
except Ex as e:
print(e)
问题是输出将是什么?我以为是exex
。输出结果为ex
。现在我不明白这个结构。在我看来,我可以忽略self.args=(msg,)
。这无关紧要。我不明白的是Exception.__init__(self,msg+msg)
这一行。我不太习惯例外。
调用Exception.__init__(self,msg+msg)
时,调用msg+msg
(在本例中,exex
存储在args
属性中)。通过在之后执行self.args=(msg,)
,您将覆盖之前对args
属性的赋值。如果您想打印exex
而不是ex
,只需删除self.args=(msg,)