【发布时间】:2021-10-02 17:26:22
【问题描述】:
我有以下教程中的代码:
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) 这一行。我不习惯例外。
【问题讨论】:
-
如果你认为
self.args=(msg,)无关紧要,为什么会出现呢? -
您的自定义异常类看起来像从其他类继承的任何其他类。这正是我希望看到的。你不明白的那一行是什么?
-
我不明白 msg+msg 的作用。所以我从超类 Exception 中调用 init 并交出 self 和 msg+msg。这是谁做的,交出味精+味精?那么 Exception.__init__(self,msg+msg) 又做了什么?当我删除 self-args 然后 msg+msg 是输出。我不明白这种方式。