Python 如何声明变量';在pydev中键入什么?
假设有一组类Map1,Map2,Map3,。。。所有这些都是从BaseMap扩展而来的,我使用一些反射机制来获取子映射的实例。我想动态地获取其中一个类的实例,并将其存储在变量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
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*