У меня есть кусок кода, который, кажется, работает как задумано. Однако недавно я заметил, что 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