2024-06-25 06:50:11 发布
网友
我使用Komodo Edit进行Python开发,我想从自动完成中获得最佳效果。在
如果我这样做:
a = A() a.
我可以看到a的成员名单
但如果我这么做:
它不起作用。我希望能够做到:
a = [A()] b = a[0] """b Type: A """ b.
那么我怎样才能告诉自动完成程序b是A型的呢?在
我认为你不会有太多的运气。问题是,在Python中静态推断变量的类型非常困难,除非是在最简单的情况下。通常直到运行时才知道类型,因此不可能自动完成。在
IDE做了一些静态分析,以找出最明显和最好的猜测,但我敢打赌它甚至没有尝试在容器中寻找元素。尽管我们可以计算出b是A类型,但即使是对代码的微小变化也可能使其不可知,尤其是当它位于可变容器中时。在
b
A
顺便说一句,我已经在科莫多IDE上试过了,也没什么好的。我听说Wing IDE有很好的代码完成能力,但我不确定它还能做得更好。在
这并不能真正回答您的问题,但是使用Wing IDE可以使用assert isinstance(b, A)向类型分析器提供提示。见here。我还没有找到用Komodo实现的方法,不过显然在编写PHP或JavaScript时是possible。在
assert isinstance(b, A)
更新:
我找到了一种方法来欺骗科莫多:
if 0: b=A()
这是可行的(至少在komodo5.2上是这样的),没有副作用,但是肯定会混淆任何人读你的代码。在
我认为你不会有太多的运气。问题是,在Python中静态推断变量的类型非常困难,除非是在最简单的情况下。通常直到运行时才知道类型,因此不可能自动完成。在
IDE做了一些静态分析,以找出最明显和最好的猜测,但我敢打赌它甚至没有尝试在容器中寻找元素。尽管我们可以计算出
b
是A
类型,但即使是对代码的微小变化也可能使其不可知,尤其是当它位于可变容器中时。在顺便说一句,我已经在科莫多IDE上试过了,也没什么好的。我听说Wing IDE有很好的代码完成能力,但我不确定它还能做得更好。在
这并不能真正回答您的问题,但是使用Wing IDE可以使用
assert isinstance(b, A)
向类型分析器提供提示。见here。我还没有找到用Komodo实现的方法,不过显然在编写PHP或JavaScript时是possible。在更新:
我找到了一种方法来欺骗科莫多:
这是可行的(至少在komodo5.2上是这样的),没有副作用,但是肯定会混淆任何人读你的代码。在
相关问题 更多 >
编程相关推荐