Автозаполнение для типов, которые могут быть динамически чем угодно - не работает - PullRequest
0 голосов
/ 05 марта 2019

У меня есть автозаполнение для Python с установленными расширениями Python и IntelliSense.

Я установил пакет matplotlib, и завершение работы для этого

import matplotlib.pyplot as plt

fig = plt. #figure() shows in completion menu

но когда я попробую это

fig = plt.figure()

fig. # no completion menu. Specifically looking for suptitle()

[EDIT] Похоже, это на самом деле связано с динамичностью Python. Например, подсказка для типа приводит к завершению

fig = plt.figure()
assert isinstance(fig, figure.Figure)
fig. # now completes perfectly

1 Ответ

1 голос
/ 05 марта 2019

Как правило, автозаполнение сильно зависит от информации о типе.

Причина IDE не говорит вам, какой метод или поле данных она имеет, потому что:

  1. Еслитип не может быть получен во время компиляции (или «перед выполнением»), IDE не знает, что это такое.

  2. На самом деле IDE может выполнить автозаполнение, если сканирует все возможные пути, ноЭто не имеет смысла, производительность будет очень плохой.

После python 3.5 мы можем указать тип возвращаемого метода.Если в matplotlib добавлена ​​подсказка типа, IDE может поддерживать автоматическое завершение.

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

...