IDE 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 (), который он должен был бы accept - это вызов 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
5
задан Charles 14 October 2011 в 18:49
поделиться