在VS Code和Python中自动完成Automation对象

Zev*_*itz 9 python jedi win32com visual-studio-code

我安装了Python Extensions for Windows.在PythonWin IDE中,我可以在Automation对象(特别是创建的对象win32com.client.Dispatch)上获得自动完成功能:

具有自动完成功能的PythonWin IDE

如何在VS Code中获得相同的自动完成功能?

我正在使用Microsoft Python扩展.

Python Windows Extensions有一个名为COM Makepy的工具,它显然生成了Automation对象的Python表示,但我无法弄清楚如何使用它.

更新

显然,Microsoft Python扩展使用Jedi进行自动完成.

我在Github上的扩展项目中提出了一个问题.

请注意,我通常在Python中使用Intellisense; 它只是我缺少的自动化对象上的Intellisense.

小智 3

我认为您展示的示例不PythonWin容易在 VS Code 中重现。快速入门指南win32com本身(如下引用)指出,只有使用 COM 浏览器或产品文档(本例中为 Word)才可能实现。后一种可能性不大,因此PythonWin可能使用 COM 浏览器来查找属性。由于PythonWin和位于同一个包中,因此内置 COM 浏览器的win32com可能性也不是很大。PythonWin

我如何知道哪些方法和属性可用?

好问题。这很难!您需要使用产品的文档,或者可能需要使用 COM 浏览器。但请注意,COM 浏览器通常依赖于这些对象以某种方式注册自身,但许多对象并不这样做。只是希望你知道。

如果您想要VS Code 插件具有相同的功能,则必须将 COM 浏览器实现到Jedi(VS Code 插件的 IntelliSense)中。

编辑:我发现了这个建议,关于如何完成可以找到这些隐藏属性的自动完成:

这些包装器会执行各种使静态分析变得困难的事情,除非我们对它们进行特殊处理。这种情况的一般解决方案是运行到断点并在实时运行时状态下工作。然后,自动完成器应该包含完整的符号列表,因为它会检查运行时。

该对话来自 python IDE wingwide的邮件列表。在这里您可以看到,他们实施了上述方法:

自动完成图标