Max
Max

Reputation: 8045

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?

Upvotes: 4

Views: 1079

Answers (2)

stacksia
stacksia

Reputation: 661

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.

Upvotes: 0

sloth
sloth

Reputation: 101142

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

Upvotes: 6

Related Questions