如何避免Python 3中继承类构造函数的Pylint警告?
在Python 3中,我有以下代码:
class A:
def __init__(self):
pass
class B(A):
def __init__(self):
super().__init__()
这段代码会引发Pylint的警告:
- 定义了旧式类。(old-style-class)
- 在旧式类上使用super。(super-on-old-class)
我理解的是,在Python 3中已经没有旧式类了,所以这段代码应该没问题。
即使我在这段代码中明确使用了新式类:
class A(object):
def __init__(self):
pass
class B(A):
def __init__(self):
super().__init__()
我仍然会收到Pylint的警告,因为在Python 3中调用父类构造函数的语法不同:
- 缺少super()的参数。(missing-super-argument)
那么,我该如何告诉Pylint我想检查Python 3的代码,以避免这些提示(而不禁用Pylint的检查)呢?
2 个回答
5
根据这个列表,'缺少对super()的参数'的代码是E1004。如果你只想关闭一种类型的警告,可以在文件的开头添加这一行:
# pylint: disable=E1004
或者你可以试着这样调用super()
:
class B(A):
def __init__(self):
super(B, self).__init__()
-1
这是因为astroid这个工具里有个小错误,它在Python 3之前没有把所有的类都当作新风格的类来处理。这个问题在这里被修复了:https://bitbucket.org/logilab/astroid/commits/6869fb2acb9f58f0ba2197c6e9008989d85ca1ca
这个修复很快就会发布出来。