我正在使用Komodo Edit进行Python开发,我希望从自动完成中获得最佳效果。
如果我这样做:
a = A()
a.
我可以看到A的成员列表。
但如果我这样做:
a = [A()]
b = a[0]
b.
它不起作用。我希望能够做到这一点:
a = [A()]
b = a[0]
"""b
Type: A
"""
b.
那么如何判断自动完成b是A型?
答案 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有很好的代码完成,但我不确定它能做得更好。