Как мне напечатать подсказку в списке типов для составного класса в Python? - PullRequest
0 голосов
/ 14 февраля 2019

По некоторым архитектурным причинам, находящимся вне моего контроля, объект, которым я часто пользуюсь и для которого требуется полное завершение кода, представляет собой динамическое соединение нескольких функций поверх статических функций, уже присутствующих в исходном коде.

import lgb.reqs.plan
# Various imports which dynamically extend the smallform
import lgb_extensions.water_extras
import lgb_extensions.toolkit_extras

d = c.req[0]  # type: lgb.reqs.plan.smallform 
d = d  # type: lgb_extensions.water_extras.common
d = d  # type: lgb_extensions.toolkit_extras.common

# Now I get the autocomplete on d as I type "d."
d.

Я обнаружил, что метод переназначения d отлично работает, но он кажется неправильным.Нет ли способа напечатать подсказку с помощью кортежа или чего-то еще?Я пытался и не мог понять это.

Я обнаружил, что ноутбук Jupyter отлично подходит для автозаполнения, и я перейду к сеансу ipython или ноутбука, если мне действительно нужно исследовать неизвестную кодовую базу,но в этом случае я довольно хорошо знаком с базой кода и просто хотел бы, чтобы автодополнения были лучше, поскольку я никогда не могу вспомнить, как именно это называется.Я в основном в пичарме или атоме, если это имеет значение.Приведенное выше решение уже решает мою проблему , если есть только несколько расширений , но оно не работает, когда у меня есть 10 вещей, расширяющих объект.В моем обычном случае у меня есть около 20 вещей, расширяющих объект, на котором я хотел бы выполнить автозаполнение.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете использовать Union здесь.Это больше для случая, когда имя может содержать разные типы в разных обстоятельствах.

Например.

from typing import Union

a = f() # type: Union[str, int]
d. # now get autocompletion for str and int from IDEs
...