我正在尝试在 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' 的方法未被调用
。所以我尝试调用它:
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
我怎么能在没有任何警告的情况下做这么简单的事情?
最佳答案
当你调用super
时,你需要子类/派生类作为第一个参数,而不是主类/基类。
来自 Python 在线文档:
class C(B):
def method(self, arg):
super(C, self).method(arg)
所以你的异常定义如下:
class MyException(Exception):
def __init__(self, message):
super(MyException, self).__init__(message)
self.message = message
关于python - "correct"在 Python 中定义异常而没有 PyLint 提示的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901000/