Предупреждение Pylint для класса, который наследует класс, наследующий множественную типизацию. - PullRequest
0 голосов
/ 13 июня 2019

Я работаю над кодом Python-3 с аннотацией типа, как показано ниже:

from typing import Generic, TypeVar

T = TypeVar("T")
U = TypeVar("U")

class A(Generic[T]):
    def __init__(self, a: T) -> None:
        self.a = a

class B(Generic[U]):
    def __init__(self, b: U) -> None:
        self.b = b

class C(A[T], B[U]):
    def __init__(self, a: T, b: U) -> None:
        A.__init__(self, a)
        B.__init__(self, b)

class D(C[int, str]):
    pass

if __name__ == "__main__":
    d: D = D(1, "abc")

mypy подтверждает, что этот код правильно аннотирован, но pylint выдает предупреждение, которое говорит

E0241: Duplicate bases for class 'D' (duplicate-bases)

Я не могу понять, почему pylint обнаруживает, что существуют повторяющиеся базовые классы для класса D.Одна из возможных гипотез заключается в том, что причина заключается в наследовании алмаза, корень которого typing.Generic, но если это так, то pylint не предупреждает для класса C.

Кроме того, когда я удалилвсе типы аннотаций из кода pylint подтвердили, что этот код является правильным.

Как я могу исправить этот код для pylint?

...