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