Интегрированная среда разработки python с завершением кода, включая вывод типа параметр-объект


Я протестировал множество Python IDE для их возможностей завершения кода. Существует ли тот, который может выполнить завершение кода в следующем случае:

def foo(x):
    print x.read()  // remove this line, and type in "print x."

def main():
    n = open("c:\python27\test.py");
    foo(n)
IDE должна вычислить, что foo вызывается где-то в текущем модуле с параметром, который был возвращаемым значением из вызова open (), который он должен был бы считать вызовом file.open, и, таким образом, возвращает объект file. Таким образом, x., за которым следует Ctrl+пробел, вызовет завершение кода и покажет, что x, как объект файла, может поддерживает любой метод объекта file, включая read().

Я обнаружил, что PyScripter, например, может делать это:

    n = open("c:\python27\test.py");
    n. // hit <ctrl+space> after n.
Приведенный выше сценарий завершения кода работает, потому что PyScripter выполняет некоторую специальную логику завершения кода, чтобы определить, что n является файловым объектом, но, похоже, нет способа вывести типы объектов или доступные методы из статического анализа, которые выведут типы параметров.

Во-вторых, если ничего подобного нет в Python 2.x, в Python 3.x, теперь, когда есть подсказки статического типа, поддерживает ли их какая-либо IDE?

   def foo(x:'file'):
        print x.read()  // remove this line, and type in "print x." and hit ctrl+space
2 5

2 ответа:

Единственное, что я думаю, может сделать (почти), это PyCharm

Но вы должны дать ему некоторые подсказки:

Вместо python2


Если вы используете Python 3, IDE будет проверять аннотации функций следующим образом:

Python3

(класс file был удален из python 3, поэтому я сделал пример со строкой)

Это не бесплатная IDE, но, IMHO имеет лучшее доступное завершение кода.

WingIDE также имеет такой тип вывода, хотя он не открыт.