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