Я работаю над кодом 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
?