繁体   English   中英

如何在pydev中声明变量的类型?

[英]how to declare variable's type in pydev?

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

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

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

在分配m和使用它之前。 if条件内的行将永远不会执行,但它声明m是BaseMap类型的对象。

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

您可以使用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 ,但是可以工作(也不会造成伤害)。

这个问题类似于这篇文章: Eclipse pydev自动建议在某些情况下不起作用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM