Python 如何声明变量';在pydev中键入什么?

Python 如何声明变量';在pydev中键入什么?,python,pydev,Python,Pydev,假设有一组类Map1,Map2,Map3,。。。所有这些都是从BaseMap扩展而来的,我使用一些反射机制来获取子映射的实例。我想动态地获取其中一个类的实例,并将其存储在变量m中,并让pydev将该类型识别为BaseMap,以便对其使用单词补全 我发现一个解决方案是添加代码 if False: m = BaseMap(0,0,0) 分配m后和使用前。if条件中的行永远不会执行,但它声明m是一个BaseMap类型的对象 这可能看起来很傻,但确实奏效了。还有其他方法吗?您可以使用断言isi

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

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

if False:
    m = BaseMap(0,0,0)
分配
m
后和使用前。if条件中的行永远不会执行,但它声明
m
是一个BaseMap类型的对象


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

您可以使用
断言isinstance(…)
在pydev中获取变量的自动完成,否则pydev将无法猜测正确的类型

假设您的代码是:

m = getAttr(someThing, 'someAttr')
m.*no autocompletion*
pydev无法知道
m
的类型,因此不会显示自动完成

尝试:


这有点骇人听闻,但它会起作用(也不会造成伤害)。

这个问题类似于这篇文章:

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

相关:该问题答案的可能重复项更完整、更新,包括sphinx
:键入m:BaseMap
符号,该符号不需要断言。
m = getAttr(someThing, 'someAttr')
assert isinstance(m, BaseMap) # or whatever class it is
m.*pydev shows autocompletion*