为什么Python中的dir()函数不能显示所有可调用属性?
import win32com.client
iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application")
currentTrack = win32com.client.CastTo(iTunes.CurrentTrack,"IITFileOrCDTrack")
print dir(currentTrack)
结果:
['AddArtworkFromFile', 'CLSID', 'Delete', 'GetITObjectIDs', 'Play', 'Reveal', 'UpdateInfoFromFile', 'UpdatePodcastFeed', '_ApplyTypes_', '__doc__', '__eq__', '__getattr__', '__init__', '__module__', '__ne__', '__repr__', '__setattr__', '_get_good_object_', '_get_good_single_object_', '_oleobj_', '_prop_map_get_', '_prop_map_put_', 'coclass_clsid']
print currentTrack.Location
Location是可调用的,返回文件路径,但它未列在第一个结果中。它也不会出现在代码补全工具中。这是因为它通过getter方法获取吗?我在_prop_map_get_和_prop_map_put_下看到了它的列表。
另外,为什么currentTrack.Location返回文件路径,而currentTrack._prop_map_get_['Location']返回"(1610874880, 2, (8, 0), (), 'Location', None)"?它从哪里获取文件路径字符串?
COMObject
实例的属性提供正确的完成列表,以及是否可以在Python代码中执行相同的操作,或者它是否执行了win32com包没有公开的操作。 - Wooble