像 PDT 一样使用 PyDev 来完成代码?
-
19-09-2019 - |
题
有没有办法通过告诉 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(这将删除断言)
不隶属于 StackOverflow