在许多情况下(例如函数参数)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
我不赞成这种特殊的方法,它只是一个系统的例子,这个系统可以工作。当然,这不应该是强制性的,但是有时候,缺少提示类型的可能性是令人恼火的。
从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调用(现在仍然有效):
PyDev将能够识别它并正确地为它提供代码完成(注意,如果您发现Python会使代码变慢,则可以在以后不使用断言的情况下运行它:What does Python optimization (-O or PYTHONOPTIMIZE) do?)
相关问题 更多 >
编程相关推荐