Возьмите следующий пример:
Код: Выделить всё
class Type: pass
class Type1(Type):
def __init__(self, value):
self.some_member = value
class Type2(Type):
def __init__(self, value):
self.other_member = value
class Base:
def __init__(self, injected: Type):
self.injected = injected
class Derived1(Base):
def __init__(self, injected: Type1):
super().__init__(injected)
class Derived2(Base):
def __init__(self, injected: Type2):
super().__init__(injected)
Код: Выделить всё
instance1 = Derived1(Type1(5))
instance1.injected.some_member = 2 # IDE knows nothing about `some_member`
Код: Выделить всё
MyType = TypeVar('MyType', bound=Type)
class Base:
def __init__(self, injected: MyType):
self._injected = injected
Обратите внимание, что сам линтер полностью доволен использованием, поэтому это больше похоже на возможное ограничение самоанализа подсказок типов в IDE.< /эм>
Подробнее здесь: https://stackoverflow.com/questions/717 ... -in-python