Komodo Python auto complete: type inference by variable metadata?

谁说胖子不能爱 提交于 2019-11-27 03:31:42

问题


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?


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/1678953/komodo-python-auto-complete-type-inference-by-variable-metadata

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