I'm using Komodo Edit for Python development, and I want to get the best out of the auto complete.
If I do this:
a = A()
a.
I can see a list of members of A.
But if I do this:
a = [A()]
b = a[0]
b.
It does not work. I want to be able to do this:
a = [A()]
b = a[0]
"""b
Type: A
"""
b.
So how can I tell the auto complete that b is of type A?
This doesn't really answer your question, but with Wing IDE you can give hints to the type analyzer with assert isinstance(b, A)
. See here. I haven't found a way to do it with Komodo, though apparently it's possible when writing PHP or JavaScript.
Update:
I've found a way to trick Komodo into doing this:
if 0: b=A()
This works (at least on Komodo 5.2) and has no side effects, but is sure to confuse whoever reads your code.
I don't think that you'll have much luck with this. The problem is that it's really quite difficult to statically infer the type of variables in Python except in the simplest of cases. Often the type isn't known until run-time and so auto completion isn't possible.
The IDE does some static analysis to work out the obvious and best guesses, but I'll bet it isn't even trying for elements in a container. Although we can work out that b
is of type A
even small variations to your code can make it unknowable, especially as it's in a mutable container.
Incidentally I've tried this on the full Komodo IDE and it's no better. I hear that Wing IDE has excellent code completion, but I wouldn't be sure it could do any better either.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With