3

有没有办法通过告诉它变量的类型来帮助 PyDev 代码完成?

使用 PDT,您可以为此目的使用类似 PHPDoc 的语法:

/* @var $my_var MyClass */
$my_var = myFunction();
// PDT is able to figure out that $my_var is a MyClass object.

但直到现在,我无法弄清楚如何在 python 中做同样的事情。

4

3 回答 3

3

实际上,如果您执行断言 isinstance()

例如:

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

请注意,Pydev 确实分析了函数的返回,因此,它可能在许多情况下都知道这一点。

此外,如果您使用 python -O (这将删除断言),那不应该有运行时惩罚

于 2010-01-14T19:25:28.563 回答
3

断言技巧似乎不适用于 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")

在所有情况下,它看起来都很老套,我希望有一种更简洁的方式来做事(文档、注释等)

于 2011-09-16T09:18:22.947 回答
1

不(请参阅文档)。看起来 PyDev 完成了导入的东西和语言关键字。

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

于 2010-01-06T22:30:55.317 回答