Pydev代码完成

2024-04-26 06:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在许多情况下(例如函数参数)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

如果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

我不赞成这种特殊的方法,它只是一个系统的例子,这个系统可以工作。当然,这不应该是强制性的,但是有时候,缺少提示类型的可能性是令人恼火的。


Tags: pip方法anapp类型objectdef情况
3条回答

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

如果使用PyCharm,则可以选择epydoc或sphinx docstring样式,并根据该样式指定参数类型和函数返回值(further discussion

[编辑]

自PyDev 2.8.0以来,它可以使用docstring和注释来发现对象的类型。

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

[在PyDev 2.8.0之前]

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

assert isinstance(a_list, list)

PyDev将能够识别它并正确地为它提供代码完成(注意,如果您发现Python会使代码变慢,则可以在以后不使用断言的情况下运行它:What does Python optimization (-O or PYTHONOPTIMIZE) do?

相关问题 更多 >