Как правильно аннотировать типы внедренной зависимости в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно аннотировать типы внедренной зависимости в Python?

Сообщение Anonymous »

Может ли кто-нибудь подсказать мне, как лучше всего аннотировать тип внедрённой зависимости в Python, чтобы член правильно идентифицировался с помощью подсказок типа в IDE?
Возьмите следующий пример:

Код: Выделить всё

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)

Мне бы хотелось, чтобы IDE (VS Code/PyCharm и т. д.) могла обеспечивать поддержку подсказок типов при доступе к членам внедренной зависимости:

Код: Выделить всё

instance1 = Derived1(Type1(5))
instance1.injected.some_member = 2  # IDE knows nothing about `some_member`

Документация предполагает, что лучший способ решить эту проблему — использовать TypeVar

Код: Выделить всё

MyType = TypeVar('MyType', bound=Type)

class Base:
def __init__(self, injected: MyType):
self._injected = injected
К сожалению, это не помогает. Будем признательны за любые предложения.
Обратите внимание, что сам линтер полностью доволен использованием, поэтому это больше похоже на возможное ограничение самоанализа подсказок типов в IDE.< /эм>

Подробнее здесь: https://stackoverflow.com/questions/717 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать класс (а не компонент) с внедренной службой в другом классе?
    Anonymous » » в форуме C#
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Как найти последовательность байтов в целевой программе из моей внедренной dll?
    Anonymous » » в форуме C++
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous
  • Как повторно повторно внедренной формы Mailerlite при изменении маршрута без обновления страницы?
    Anonymous » » в форуме Javascript
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать типы в цикле for?
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как аннотировать типы в цикле for?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»