简体   繁体   中英

how to declare variable's type in pydev?

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?

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).

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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