В нашем проекте мы используем 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
, но я хотел бы знать, есть ли другой, возможно, более прямой способ достижения того же самогоповедение без каких-либо предупреждений о пилинте или мипи.