我正试图在Python2.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__ method from base class 'Exception' is not called
。所以我试着称之为:
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
我怎么能做这么简单却没有任何警告的事?
你的第一条路应该行得通。在Python2.6.5中,我一直自己使用它。不过,我不使用“message”属性;也许这就是在第一个示例中获得运行时警告的原因。
例如,以下代码运行时没有任何错误或运行时警告:
结果是:
我不知道派林特是否会对上述问题有意见。
好吧,我想我已经知道了。这似乎让皮林特很高兴:
调用
super
时,需要将子类/派生类作为第一个参数,而不是主/基类。从Python联机文档中:
所以你的例外定义如下:
相关问题 更多 >
编程相关推荐