Тип Подсказка, что это Подкласс - PullRequest
0 голосов
/ 02 марта 2020

Как один указывает на подсказки типа, что один класс является подклассом другого? Например.

class Foo:
  def foo(self, x):
    pass

def dynamic() -> Type[Foo]:
  class SubFoo(Foo):
    pass

  return SubFoo

class SubSubFoo(dynamic()):
  def f|  # no suggestions from my editor

Мой редактор (PyCharm) не предоставляет предложений в вышеупомянутом случае, указывая, что анализ stati c не распознает, что SubSubFoo является подтипом Foo. Как я могу использовать подсказки типа, чтобы указать это?

1 Ответ

0 голосов
/ 03 марта 2020

У меня есть ответ от JetBrains, указывающий, что это ограничение PyCharm, а не ограничение или неправильное использование подсказок типов:

В данном конкретном случае это ограничение IDE, мы не заглядываем внутрь Функция Dynami c () может быть намного более сложной.

- Андрей Реслер

В качестве исправления я использую идиому, где всякий раз, когда я делаю подкласс dynamic(), я буду также подклассом Foo после этого, что приводит к появлению желаемых предложений без изменения логики c программы (даже если это выглядит немного странно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...