IDE Python с дополнением кода, включая вывод типа объекта параметра - PullRequest
5 голосов
/ 14 октября 2011

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

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 и, таким образом, возвращает объект файла.Таким образом, x., за которым следует Ctrl + Space, вызовет завершение кода и покажет, что x как файловый объект может поддерживать любой метод файлового объекта, включая 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 ]

8 голосов
/ 15 октября 2011

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

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

Python2


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

Python3

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

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

1 голос
/ 01 октября 2012

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

...