我有以下简单的代码:
class testing:
def __init__(self, arg1, arg2, arg3):
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
if __name__ == '__main__':
arg_1 = testing("a", "b", "c")
当我执行它时一切正常但是当我用arg_1
这样增加"d"
时:
if __name__ == '__main__':
arg_1 = testing("a", "b", "c", "d")
我收到以下错误:
TypeError: __init__() takes 4 positional arguments but 5 were given
现在我想提出一个例外:
class testing:
def __init__(self, arg1, arg2, arg3):
try:
self.arg1 = arg1
self.arg2 = arg2
self.arg3 = arg3
except TypeError:
print("Error, to many values")
if __name__ == '__main__':
arg_1 = testing("a", "b", "c", "d")
我收到相同的错误消息。我做错了什么?
答案 0 :(得分:2)
self
。 try-except
甚至不会执行,调用时会发生错误。你已经指定了三个额外的args,而不是四个。
如果您需要来检查是否应该在try-except
初始化时包装调用:
if __name__ == '__main__':
try:
arg_1 = testing("a", "b", "c", "d")
except TypeError:
print("Error, to many values")
无论你需要什么目的。
答案 1 :(得分:1)
Python在尝试调用 init ()时抛出错误,因此永远不会达到您的自定义错误。如果要在这种情况下使用自定义错误,则需要使用* args支持变量参数长度。
if __name__ == '__main__':