在PyDev中,如何为方法返回的实例获取自动完成功能?

时间:2013-07-22 22:19:25

标签: python pydev

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

3 个答案:

答案 0 :(得分: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自动完成功能所必需的。

答案 1 :(得分:2)

断言isInstance在python中打破了“更好地请求宽恕而非许可”范例。

Pydev了解文档字符串中特定装饰器的类型提示。

以下是一组示例: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语法)没有太多运气但是没有尝试过多,但无论分配的对象是什么,都可以通过上面的例子中所期望的类型来声明。 / p>

答案 2 :(得分:0)

您可以使用Sphinx文档评论:

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

有关详情,请参阅:http://www.pydev.org/manual_adv_type_hints.html