有没有办法通过告诉 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 可以完成导入的内容和语言关键字。

不过,这似乎不会出现很多。有问题的变量似乎只有在作为没有默认值的函数参数传入时才会被 pydev 识别。并且,如果您有一个在您自己的类上运行的函数,那么它似乎应该是一个类成员(所以自动完成功能已经可以工作了)。

其他提示

断言招似乎并没有对我的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")

在所有的情况下,它看起来很哈克,我会爱一个更清洁的方式做事情(文档,注释,等等)

实际上,可以如果做一个断言isinstance()

E.g:

a = function()
assert isinstance(a, MyClass)
a. <- would get the proper completions

请注意Pydev的做分析的函数的返回,因此,它可能是它知道,在许多情况下。

此外,不应该有运行时的处罚,如果你使用Python -O(这将删除断言)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top