有没有办法通过告诉它变量的类型来帮助 PyDev 代码完成?
使用 PDT,您可以为此目的使用类似 PHPDoc 的语法:
/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.
但直到现在,我无法弄清楚如何在 python 中做同样的事情。
有没有办法通过告诉它变量的类型来帮助 PyDev 代码完成?
使用 PDT,您可以为此目的使用类似 PHPDoc 的语法:
/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.
但直到现在,我无法弄清楚如何在 python 中做同样的事情。
实际上,如果您执行断言 isinstance()
例如:
a = function()
assert isinstance(a, MyClass)
a. <- would get the proper completions
请注意,Pydev 确实分析了函数的返回,因此,它可能在许多情况下都知道这一点。
此外,如果您使用 python -O (这将删除断言),那不应该有运行时惩罚
断言技巧似乎不适用于 PyDev 2.2.2 ;它仍然应该?
然而,我尝试了另一个技巧,该工作如下:
class Foo(object):
def __init__(self, bar):
self.bar = bar
# Tricking PyDev
if (not self.bar):
self.bar = Bar()
raise Exception("Bar should not be null")
在所有情况下,它看起来都很老套,我希望有一种更简洁的方式来做事(文档、注释等)
不(请参阅文档)。看起来 PyDev 完成了导入的东西和语言关键字。
不过,这似乎不会出现很多。有问题的变量似乎只有在它作为没有默认值的函数参数传入时才对 pydev 是未知的。而且,如果您有一个在自己的类上运行的函数,那么它似乎应该是一个类成员(所以自动完成已经可以工作了)。