3

我有一个继承自的python类collections.Counter

class Analyzer(collections.Counter):
   pass

当我在这段代码上使用 pylint 时,它的答案是:

W:方法“fromkeys”在“Counter”类中是抽象的,但未被覆盖(抽象方法)

我检查了collections.Counter在我的机器上的实现,并且有效地,这个方法没有实现(并且评论有助于理解为什么):

class Counter(dict):
    ...
    @classmethod
    def fromkeys(cls, iterable, v=None):
        # There is no equivalent method for counters because setting v=1
        # means that no element can have a count greater than one.
        raise NotImplementedError(
            'Counter.fromkeys() is undefined.  Use Counter(iterable) instead.')

但是,我真的不知道如何实现这个方法,如果Counter它本身没有......</p>

在这种情况下解决此警告的方法是什么?

4

2 回答 2

1

这个问题应该回答这里的一些问题。基本上,pylint 检查NotImplementedError引发的异常以确定方法是否是抽象的(在这种情况下是误报)。添加评论#pylint: disable=W0223将禁用此检查。

这个问题也提出了类似的问题

于 2017-06-14T14:38:27.240 回答
0

有两种不同的思维方式。

  • 考虑Counter为抽象的(正如 pylint 所做的那样,正如Jared解释的那样)。然后,该类Analyzer 必须实现fromkeys或者也是抽象的。但是那样的话,应该是无法实例化Counter的。
  • 考虑Counter具体,即使你不能使用它的fromkeys方法。然后,必须禁用 pylint 的警告(因为在这种情况下是错误的,请参阅Jared对 kown how 的回答),并且该类Analyzer也是具体的,不需要实现此方法。
于 2017-06-15T11:53:23.403 回答