【发布时间】:2011-09-07 07:22:56
【问题描述】:
在很多情况下(例如函数参数)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
我不赞同这种特定方法 - 它只是一个可以工作的系统示例。同样,这当然不应该是强制性的 - 但有时缺乏暗示类型的可能性很烦人。
【问题讨论】:
-
你的意思是,除了添加不存在的类型注释是动态语言的优点之一?
-
@delnan - 是的!不要误会我的意思,我完全支持不强制注释。我正在考虑能够偶尔添加它们,也许作为 cmets(因为它们当然不是语言的一部分)
-
函数参数是通用的和鸭子类型的,你希望它返回什么?
-
@delnan - 我怀疑声明变量更不利。有没有人对此进行过研究,以确定不声明变量是否真的节省了努力?我在无声明语言中看到了很多错误。 (为了记录,声明变量不会降低语言的动态性。即使是 Javascript 也有“var”!)
标签: python eclipse pydev code-completion