Pydev 代码补全全面支持
在很多情况下,比如函数参数,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
我并不是在推荐这个具体的方法——这只是一个可能有效的系统的例子。当然,这种方式不应该是强制的——但有时候,无法提示类型确实让人感到烦恼。
5 个回答
5
从PyDev 2.8.0版本开始,你可以使用Sphinx或Epydoc的注释来帮助代码补全。想了解更多,可以查看这个链接:http://pydev.org/manual_adv_type_hints.html
22
[编辑]
从 PyDev 2.8.0 版本开始,它可以通过文档字符串和注释来识别对象的类型。
详细信息请查看:http://pydev.org/manual_adv_type_hints.html,了解支持的格式。
[在 PyDev 2.8.0 之前]
之前,它只支持使用 assert isinstance 调用(这仍然有效):
assert isinstance(a_list, list)
PyDev 将能够识别它,并为其提供正确的代码补全(请注意,如果你发现使用断言会让你的代码变慢,你可以在后面运行 Python 时去掉这些断言:Python 优化 (-O 或 PYTHONOPTIMIZE) 是做什么的?)