Reputation: 8045
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
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
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