【问题标题】:how to declare variable's type in pydev?如何在pydev中声明变量类型?
【发布时间】:2012-09-05 02:53:12
【问题描述】:

假设有一组类 Map1,Map2,Map3,... 都是从 BaseMap 扩展而来的,我使用一些反射机制来获取子 Map 的实例。我想动态获取其中一个类的实例并将其存储在变量 m 中,并让 pydev 将类型识别为 BaseMap,以便我可以在其上使用单词补全。

我发现一种解决方案是添加代码

if False:
    m = BaseMap(0,0,0)

在分配m 之后和使用它之前。 if 条件中的那一行永远不会被执行,但它声明 m 是一个 BaseMap 类型的对象。

这可能看起来很傻,但确实有效。还有其他方法吗?

【问题讨论】:

标签: python pydev


【解决方案1】:

您可以使用assert isinstance(...) 在 pydev 中对变量进行自动补全,否则 pydev 将无法猜出正确的类型。

假设你的代码是:

m = getAttr(someThing, 'someAttr')
m.*no autocompletion*

pydev 无法知道m 的类型,因此不会显示自动补全。

试试:

m = getAttr(someThing, 'someAttr')
assert isinstance(m, BaseMap) # or whatever class it is
m.*pydev shows autocompletion*

这有点hacky,但它会起作用(而且也不会受伤)。

【讨论】:

    【解决方案2】:

    这个问题和这个帖子类似:Eclipse pydev auto-suggestions don't work in some cases

    已经提出了一个很好的答案(使用断言)。另一种解决方案是使用 this link 中描述的构造函数。

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多