Столкновение мнений Pylint и Mypy о наследовании от статических методов - PullRequest
0 голосов
/ 19 ноября 2018

В нашем проекте мы используем 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 warning Signature of "hello" incompatible with supertype "Base"

Очевидное решение, которое я использую сейчас, - это размещение директивы #pylint: disable=no-self-use перед определением Base.hello, но я хотел бы знать, есть ли другой, возможно, более прямой способ достижения того же самогоповедение без каких-либо предупреждений о пилинте или мипи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...