2

首先,请原谅我在这个问题的瓷砖上的任何不一致之处。它可能有一些,但真的不知道更好。

这个问题是在通过 python 的 COM 控制 iTunes 的上下文中提出的。

>>> itunes = win32com.client.Dispatch("iTunes.Application")
>>> itunes
<win32com.gen_py.iTunes 1.12 Type Library.IiTunes instance at 0x27248400>
>>> lib = itunes.LibraryPlaylist
>>> lib
<win32com.gen_py.iTunes 1.12 Type Library.IITLibraryPlaylist instance at 0x27249880>

我想做的是从 iTunes中检索“ IiTunes ”,从 lib中检索“ IITLibraryPlaylist ”。我已经尝试过 type(itunes) 和 type(lib) 但它们都只返回 "" 而这不是我想要的。

谢谢。

4

2 回答 2

2

不幸的是,我手头没有 Windows 机器可以尝试,但我认为是所讨论对象itunes.__class__的 (old_style) 类,以及. 因此,查看类的属性应该可以满足您的需求。ituneslib.__class__lib__name__

不幸的是,这些都是旧式类(所以type(...)不能正常工作),但是 win32com 已经存在了很长时间,早在 Python 2.2 中出现闪亮的新式类之前,所以我认为它是完全可以理解的; -)。

于 2009-09-12T16:17:16.507 回答
1

此属性错误的主要原因是您的 COM 服务器已从后期绑定(动态)转换为早期绑定(静态)。

  • 在后期绑定中,每当调用方法时,都会向对象查询该方法,如果成功,则可以进行调用。
  • 在早期绑定中,对象模型的信息是根据对象调用提供的类型信息预先确定的。早期绑定使用 MakePy。此外,早期绑定区分大小写。

尝试:

itunes = win32com.client.dynamic.Dispatch("iTunes.Application")

这将强制 COM 服务器将焦​​点集中在动态模块上,该模块应该只为您提供 iTunes 的 COM 对象。

于 2018-08-23T20:17:04.720 回答