Pylint:方法可以是基类中的函数

问题描述 投票:0回答:1

我想知道处理 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.some_funct
可能是一个函数,因为它不使用
self
(这……是真的,但我希望
self
留在那里)

是否有更好的解决方案,只需将其标记为

pylint: disable
?这......我的意思是......如果它是什么,它就是它是什么,它不是一个“交易破坏者”,但如果有更好的方法,很高兴知道。

这是针对 Python 3.6 的,以防相关。

python inheritance methods pylint
1个回答
2
投票

将该方法声明为

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
参数在正常情况下是隐式传递的,因此它不是方法的向外签名的一部分。这允许在基类中将该方法定义为
staticmethod
,并且仍然用派生类中的常规方法替换它,而不改变外部行为。

© www.soinside.com 2019 - 2024. All rights reserved.