Pydev Code完成一切

Jon*_*han 22 python eclipse pydev code-completion

在许多情况下(例如函数参数),Pydev不会静态地知道变量的类型.因此,代码完成(在.使用之后或使用时ctrl+space)不起作用.

在大多数情况下,您在设计软件时知道运行时的类型.有没有办法暗示Pydev正确编码完成它?

我想这可能需要特定的Pydev功能,或者甚至是新的Python PIP.

这实际上似乎是所有动态语言的一般问题......

更新:
也许有一个例子可以澄清:

def some_func(a_list, an_object):
    a_list.app        # Here I would not get code completion for append
Run Code Online (Sandbox Code Playgroud)

如果Pydev(或PIP)支持它,可以使用的示例:

from someobj import SomeObject
def some_func(a_list, an_object):
    # typecast: a_list=list
    # typecast: an_object=SomeObject
    a_list.app        # Now code completion would show append
Run Code Online (Sandbox Code Playgroud)

我不支持这种特定的方法 - 它只是一个可以工作的系统的例子.同样,当然这不应该是强制性的 - 但有时缺乏提示类型的可能性是令人讨厌的.

Fab*_*zny 22

[编辑]

从PyDev 2.8.0开始,它可以使用文档字符串和注释来发现对象的类型.

有关支持的格式的详细信息,请参阅:http://pydev.org/manual_adv_type_hints.html.

[在PyDev 2.8.0之前]

以前,它只支持assert isinstance调用(这仍然有效):

assert isinstance(a_list, list)
Run Code Online (Sandbox Code Playgroud)

PyDev将能够识别它并正确地为它提供代码完成(请注意,如果您发现它使代码变慢,您可以在没有断言的情况下运行Python:Python优化(-O或PYTHONOPTIMIZE)做什么?)


eak*_*st7 5

从PyDev 2.8.0开始,可以使用Sphinx或Epydoc注释来完成代码:http://pydev.org/manual_adv_type_hints.html