Я протестировал множество 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