如何禁用pylint的no-self-use警告?

18

我正在使用Python3编写代码,并使用pylint来保持我的代码整洁。

我想定义类似接口的东西,这样我就可以以简洁明了的方式添加更多功能,然而,pylint阻碍了这个目标。

这里是一个示例方法:

def on_enter(self, dummy_game, dummy_player): #pylint disable=no-self-use
    """Defines effects when entering area."""
    return None

以下是Pylint的输出:

R: 70, 4: Method could be a function (no-self-use)

问题是:

  1. 我如何抑制警告(请注意#pylint注释)?或
  2. 我如何告诉pylint这只是一个接口(请注意dummy_game和dummy_player)?

编辑: pylint --version的输出:

pylint 1.2.1, 
astroid 1.1.1, common 0.61.0
Python 2.7.8 (default, Oct 20 2014, 15:05:19) 
[GCC 4.9.1]
2个回答

31

结果证明我缺少了冒号:

我使用了
pylint disable=no-self-use
实际上应该是
pylint: disable=no-self-use

好吧,至少从现在开始我总会有最新的(而且是针对Python3构建的)pylint了 :)


24

您目前正在忽略此内容

def on_enter(self, dummy_game, dummy_player): #pylint disable=no-self-use
    ...

应该这样做

# pylint: disable=R0201
def on_enter(self, dummy_game, dummy_player): 
    ...
在你的文件中添加像下面这样的评论。
# pylint: disable=R0201

您可以在此文档中找到每个警告/错误的简短代码助记符:

no-self-use (R0201)

当一个方法没有使用其绑定实例(bound instance),并且可以编写成函数时使用。

如果整个文件仅包含接口代码,您可以在文件顶部添加:

# pylint: disable=R0201
class SomeInterface(object):
    ...
    ...

如果您还有其他代码,并且只想禁用此代码对接口类的影响,您可以像以下这样重新启用检查:

# pylint: disable=R0201
class SomeInterface(object):
    ...
    ...

# pylint: enable=R0201

class AnotherClass(object):
    ...
    ...

所有三种情况都被pylint忽略:在类之前使用#pylint disable=R0201#pylint disable=no-self-use,以及同时使用#pylint disable=R0201#pylint disable=no-self-use。我更喜欢使用完整的警告(no-self-use)而不是代码(R0201),因为这样更容易看出哪些被抑制了。 - julka
@julka 我认为你可能使用的是较旧版本的pylint,请尝试使用# pylint: disable-msg=R0201。顺便说一句,在我的系统上,如果我使用# pylint: disable-msg=R0201,它会引发另一个弃用警告。 - Anshul Goyal
@julka 刚刚注意到你的帖子。你需要将该注释放在一个新的行中,而不是代码的延续。 - Anshul Goyal
感谢您的帮助,看来我正在使用一个相当老的pylint版本。快速检查pylint网站显示当前版本为1.4,而我的系统只有1.2.1(并且甚至是针对python2构建的)。现在我只需要找到如何告诉Ubuntu软件包管理器下载pylint 1.4并针对python3进行构建。 - julka
2
天啊,我缺少了冒号:我应该使用pylint: disable=no-self-use而不是pylint disable=no-self-use - julka
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接