3

当我使用 的方法Class-A返回 的实例时Class-B,PyDev 不会为我的实例提供自动完成功能Class-B。有没有办法使这项工作,所以我不会潜在地错误输入方法名称或忘记参数?否则,PyDev 将失去其大部分价值!

4

3 回答 3

5

我想知道您是否正在使用某些类/容器组合,这会阻碍 pydev 预测返回值类型的能力。这个超级简单的例子适用于我的系统,我得到了完整的代码完成inst

class A(object):
  def __init__(self, params = None):
    self.myBs = [B() for _ in range(10)]

  def getB(self):
    return self.myBs[5]

class B(object):
  def foo(self):
    pass

inst = A().getB()
# Auto-complete broken.  PyDev thinks inst is a list.
assert isinstance(inst, B)
# Auto-complete working again.

在附加详细信息之后,该assert语句是触发 PyDev 的自动完成功能所必需的。

于 2013-07-22T22:35:59.490 回答
2

断言 isInstance 打破了 python 中“请求宽恕而不是许可”的范式。

Pydev 了解 docstrings 中用于类型提示的特定装饰器。

这是一组示例: http: //pydev.sourceforge.net/manual_adv_type_hints.html

class Foo(object):
    def method(self):
        pass

    def otherMethod(self):
        pass

def returnFoo():
    return Foo()

"""@type fooInstance: Foo"""
fooInstance = returnFoo()

我对返回类型(使用 epydoc 语法)不太幸运,但没有尝试太多,但是无论分配给什么对象,都可以通过您期望的类型来声明,如上面的示例所示。

于 2015-06-26T14:49:16.573 回答
0

您可以使用 Sphinx 文档注释:

def get_date(...):
    """:rtype date"""
    ...
    return date

有关更多信息,请参阅: http: //www.pydev.org/manual_adv_type_hints.html

于 2016-02-29T13:25:25.893 回答