Pylint和Mypy意见在继承静态方法时发生冲突

时间:2018-11-18 22:07:46

标签: python pylint mypy

在我们的项目中,我们使用mypy进行类型检查,使用pylint进行代码质量评估。我在静态方法的非静态继承中遇到了这些工具的组合问题,我想知道是否有更好的方式编写以下内容。

在我的情况下,我有一个抽象类,其方法应被重写,但具有无状态的默认实现:

class Base:
    def hello(self, arg: int) -> int:
        return arg + 5

class Derived(Base):
    def __init__(self, inc: int) -> None:
        self.inc = inc

    def hello(self, arg: int) -> int:
        return arg + self.inc

在前面的示例中,pylint抱怨本来可以用作函数的Base.hello方法(因为它不使用self

Python允许我将Base.hello方法注释为静态,如下所示:

class Base:
    @staticmethod
    def hello(arg: int) -> int:
        return arg + 5

这修复了pylint no-self-use警告,但触发了mypy警告Signature of "hello" incompatible with supertype "Base"

我现在使用的一个明显的解决方案是在#pylint: disable=no-self-use定义之前放置一个Base.hello指令,但是我想知道是否还有另一种也许更直接的方式来实现相同的行为而没有任何pylint或mypy警告。

0 个答案:

没有答案