如何获取win32com对象的实例类型?

时间:2009-09-12 15:41:34

标签: python com itunes instance

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

这个问题是在从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 '。我尝试过类型(itunes)和类型(lib),但它们都只返回“”而这并不是我想要的。

感谢。

2 个答案:

答案 0 :(得分:1)

不幸的是我手边没有Windows机器可以尝试,但我认为itunes.__class__itunes对象的(old_style)类,而lib.__class__lib的{​​{1}}类。 }}。因此,查看类的__name__属性应该可以满足您的需求。

遗憾的是,这些都是旧式的类(因此type(...)无法正常工作),但win32com已经存在了很长时间,就在Python 2.2中出现闪亮的新式类之前,我觉得这完全可以理解; - )。

答案 1 :(得分:0)

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

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

尝试:

logspace

这将强制COM服务器将焦​​点设置在动态模块上,该动态模块应仅向您提供iTunes的COM对象。