我正在尝试在Python 2.6中定义自己的(非常简单)异常类,但无论我如何做都会得到一些警告。
首先,最简单的方法:
class MyException(Exception):
pass
这段代码可以运行,但是在运行时会打印出一个警告信息:DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 那么这种方法不可取。我尝试了下面的代码:
class MyException(Exception):
def __init__(self, message):
self.message = message
这也可以工作,但是PyLint报告了一个警告:W0231: MyException.__init__: __init__方法来自基类'Exception'没有被调用
。因此我尝试调用它:
这也是可行的,但是PyLint会报一个警告:W0231: MyException.__init__: 没有调用基类 'Exception' 的 __init__ 方法
。因此,我试着调用它:
class MyException(Exception):
def __init__(self, message):
super(Exception, self).__init__(message)
self.message = message
这种方法也可以工作!但现在PyLint报告了一个错误:E1003: MyException.__init__: Bad first argument 'Exception' given to super class
到底该如何做才能不出现任何警告?
*lint
一直倾向于发出警告,因此会生成您并不真正关心的警告,并可能促使粗心大意的人做出添加未使用的方法等操作以尝试消除它的警告。让任何 lint 不再抱怨并不是一个值得追求的目标,了解它所有的警告才是关键。 - mswnoqa
/# pylint: disable=line-too-long
来消除纯粹的噪音。而调用基类的__init__
通常是一个好主意。 - ted