Cha*_*son 6 python inheritance exception
我想创建自己的Python异常类,如下所示:
class MyException(BaseException):
def __init__(self, errno, address):
if errno == 10048:
mess = str(address) + ' is already in use'
else:
mess = 'Unable to open ' + str(address)
BaseException.__init__(mess)
Run Code Online (Sandbox Code Playgroud)
但是当程序接到电话时BaseException.__init__()
,我得到了这个追溯:
BaseException.__init__(mess)
TypeError: descriptor '__init__' requires a 'exceptions.BaseException' object but received a 'str'
Run Code Online (Sandbox Code Playgroud)
我认为BaseException将采用任何一组参数.另外,我应该如何将'exceptions.BaseException'对象传递给exceptions.BaseException的构造函数?
小智 10
您必须使用实例作为第一个参数来调用基类的方法:
BaseException.__init__(self, mess)
Run Code Online (Sandbox Code Playgroud)
引用教程:
派生类中的重写方法实际上可能希望扩展而不是简单地替换同名的基类方法.有一种简单的方法可以直接调用基类方法:只需调用即可
BaseClassName.methodname(self, arguments)
.这对客户来说偶尔也很有用.(请注意,这仅在直接在全局范围内定义或导入基类时才有效.)
如Tony Arkles所述并在文档中,
所有内置的,非系统退出的异常都派生自此类.所有用户定义的异常也应该从[
Exception
] 派生.
所以你不应该继承BaseException
,无论如何......