Почему Pylint не хочет, чтобы родительский класс использовался в супер-вызове? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть кусок кода, который, кажется, работает как задумано. Однако недавно я заметил, что pylint помечает строку для E1003, которая является «когда аргумент, отличный от текущего класса, указан в качестве первого аргумента встроенного супер.»

class A():
    @classmethod
    def something(cls):
        print("A")

class B(A):
    @classmethod
    def something(cls):
        print("B")

class C(B):
    @classmethod
    def execute(cls):
        super().something()                 # This calls B.something
        something = super(B, cls).something # Shorthanding a reference to A.something
        something()                         # This calls A.something
        super(B, cls).something()           # This calls A.something as well

c = C()
c.execute()

pylint помечает только последний вызов супер (В, ЦБС) .something. Скорее я бы назвал super () или super (C, cls). Но если я собираюсь вызвать A.something, то это будет неправильно.

Почему бы не отметить оба варианта использования super (B, cls)? Является ли это ложным срабатыванием или есть веская причина, по которой я не должен пытаться достучаться до А. Что-то из класса внуков C?

Это для python 3.8.2 и Pylint версии 2.4.4

...