Komodo Python自动完成:通过变量元数据输入类型?

时间:2009-11-05 07:40:06

标签: python autocomplete komodo

我正在使用Komodo Edit进行Python开发,我希望从自动完成中获得最佳效果。

如果我这样做:

a = A()
a.

我可以看到A的成员列表。

但如果我这样做:

a = [A()]
b = a[0]
b.

它不起作用。我希望能够做到这一点:

a = [A()]
b = a[0]
"""b

Type: A
"""
b.

那么如何判断自动完成b是A型?

2 个答案:

答案 0 :(得分:8)

这并不能真正回答您的问题,但使用Wing IDE,您可以使用assert isinstance(b, A)向类型分析器提供提示。见here。我还没有找到与Komodo合作的方法,虽然在编写PHP或JavaScript时显然是possible

<强>更新

我找到了一种方法来欺骗科莫多这样做:

if 0: b=A()

这是有效的(至少在Komodo 5.2上)并且没有任何副作用,但是肯定会混淆那些阅读你的代码的人。

答案 1 :(得分:3)

我认为你不会有这么多运气。问题是,除了最简单的情况外,在Python中静态推断变量的类型真的很困难。通常直到运行时才知道该类型,因此无法自动完成。

IDE做了一些静态分析来计算出明显和最好的猜测,但我敢打赌它甚至都没有尝试容器中的元素。虽然我们可以确定b的类型为A,但即使代码的小变化也会使其变得不可知,尤其是因为它位于可变容器中。

顺便说一句,我已经在完整的Komodo IDE上尝试了这一点,但事情并没有好转。我听说Wing IDE有很好的代码完成,但我不确定它能做得更好。