我试图在Python 2.6中定义我自己的(非常简单的)异常类,但无论我怎么做,我都会收到一些警告.
首先,最简单的方法:
class MyException(Exception):
pass
Run Code Online (Sandbox Code Playgroud)
这有效,但在运行时打印出警告:DeprecationWarning:BaseException.message自Python 2.6起已被弃用,所以不是这样.然后我尝试了:
class MyException(Exception):
def __init__(self, message):
self.message = message
Run Code Online (Sandbox Code Playgroud)
这也有效,但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
Run Code Online (Sandbox Code Playgroud)
这也有效!但现在PyLint报告错误:E1003: MyException.__init__: Bad first argument 'Exception' given to super class
我该怎么做这么简单的事情没有任何警告?
Dus*_*tin 36
调用时super,需要子类/派生类作为第一个参数,而不是main/base类.
从Python在线文档:
class C(B):
def method(self, arg):
super(C, self).method(arg)
Run Code Online (Sandbox Code Playgroud)
所以你的例外定义如下:
class MyException(Exception):
def __init__(self, message):
super(MyException, self).__init__(message)
self.message = message
Run Code Online (Sandbox Code Playgroud)
好吧,我想我弄明白了.这似乎让PyLint感到高兴:
class MyException(Exception):
def __init__(self, message):
Exception.__init__(self, message)
self.message = message
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12012 次 |
| 最近记录: |