7

我正在使用 Komodo Edit 进行Python开发,我想充分利用自动完成功能。

如果我这样做:

a = A()
a.

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

但如果我这样做:

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

这没用。我希望能够做到这一点:

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

Type: A
"""
b.

那么我怎样才能告诉自动完成 b 是 A 类型的呢?

4

2 回答 2

8

这并不能真正回答您的问题,但使用Wing IDE,您可以使用assert isinstance(b, A). 见这里。我还没有找到使用 Komodo 的方法,尽管在编写 PHP 或 JavaScript 时显然是可能的。

更新

我找到了一种方法来欺骗 Komodo 这样做:

if 0: b=A()

这有效(至少在 Komodo 5.2 上)并且没有副作用,但肯定会让阅读您的代码的人感到困惑。

于 2009-11-05T16:07:11.280 回答
3

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

IDE 会进行一些静态分析以找出明显和最佳的猜测,但我敢打赌它甚至不会尝试容器中的元素。尽管我们可以确定它b是类型,A但即使代码的微小变化也可能使其不可知,尤其是当它位于可变容器中时。

顺便说一句,我已经在完整的 Komodo IDE 上尝试过这个,但并没有更好。我听说 Wing IDE 具有出色的代码完成功能,但我也不确定它是否可以做得更好。

于 2009-11-05T15:01:49.050 回答