包含参数对象类型推断的代码完成的python IDE

包含参数对象类型推断的代码完成的python IDE,ide,python-3.x,type-inference,code-completion,python-2.7,Ide,Python 3.x,Type Inference,Code Completion,Python 2.7,我已经测试了各种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的

我已经测试了各种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+Space将调用代码完成,并表明x作为文件对象可以支持任何文件对象方法,包括
read()

例如,我发现PyScripter可以做到这一点:

    n = open("c:\\python27\\test.py");
    n. // hit <ctrl+space> after n.

我认为唯一能(几乎)做到的就是

但你必须给它一些提示:


如果您使用的是Python 3,IDE将检查如下函数注释:

(文件类已从Python3中删除,因此我用string做了一个示例)


它不是一个免费的IDE,但是IMHO有最好的代码完成功能。

WingIDE也有这样的类型推断,但它不是开放的。

第一个是不可能的。foo()可以用任何方法调用。用文件调用它一次并不能保证。类型提示解决了这个问题,但我还不知道有哪种IDE支持它,但我相信它会出现。同意Lennart的观点,这是使用非强类型语言的一个折衷办法。函数注释应该与类型一起使用,而不是与字符串一起使用……谢谢,我不知道它们应该用来装什么,这正是我想要的。我应该猜到可能有人为此使用了函数docstring。它们是美丽的东西,Docstring。我希望能够在一个开源产品中模仿它的DCONSORM解析COFRESPLION,但是现在,我将考虑购买PyTrimk,它看起来很棒。
   def foo(x:'file'):
        print x.read()  // remove this line, and type in "print x." and hit ctrl+space