Pylint:方法可以是 base class 中的一个函数

Pylint: Method could be a function in base class

我想知道处理 Pylint 错误的最佳方法是什么,抱怨此示例中的情况:

class Base:
    def some_funct(self) -> List:
        """
        Intended to be overwritten in child classes, but
        if not, it's ok to return an empty list
        """
        return []

class Child1(Base):
     def some_funct(self) -> List:
          # Now, this does actual stuff!!
          return [a for a in self.some_iterable]

class Child2(Base):
   # An empty list is fine for this one
   pass

Pylint 会说 Base.safe_implementation 可能是一个函数(这......是真的,但我希望 self 留在那里)

是否有更好的解决方案,只是将其标记为pylint: disable?哪个......我的意思是......如果它是这样,它就是它并且它不是 "deal breaker" ,但如果有更好的方法,它会是很高兴知道。

这适用于 Python 3.6,以防相关。

将方法声明为 staticmethod 以使 pylint 快乐:

class Base:
    @staticmethod
    def some_funct() -> List:
        """
        Intended to be overwritten in child classes, but
        if not, it's ok to return an empty list
        """
        return []

由于 self 参数在正常情况下是隐式传递的,因此它不是方法的外部签名的一部分。这允许将方法定义为基础 class 中的 staticmethod 并且仍然用派生 class 中的常规方法替换它而不改变外部行为。