how to declare variable's type in pydev?

浪子不回头ぞ 提交于 2019-12-21 19:12:09

问题


Suppose there's a set of class Map1,Map2,Map3,... all extended from BaseMap, and I use some reflection mechanism to get the child Map's instance. I want to dynamically get an instance of one of these classes and store it in a variable m, and have pydev recognize the type as BaseMap so I can use word completion on it.

I found one solution is to add the code

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

after assigning m and before using it. The line inside the if condition would never be executed, but it declares m is a BaseMap type object.

This may look silly, but it did work. Is there any other way to do it?


回答1:


You can use assert isinstance(...) to get autocompletion in pydev on variables where otherwise pydev would not be able to guess the correct type.

Say your code is:

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

pydev would not be able to know the type of m and therefore won't show the autocompletion.

Try:

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

It's somewhat hacky, but it will work (and also does not hurt).




回答2:


This question is similar to this post: Eclipse pydev auto-suggestions don't work in some cases

One good answer is already suggested (using asserts). Another solution is to use a constructors as described in this link.



来源:https://stackoverflow.com/questions/12382193/how-to-declare-variables-type-in-pydev

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!