gpt4 book ai didi

python - 为什么 dir() 函数未列出某些可调用属性?

转载 作者:太空狗 更新时间:2023-10-29 21:35:38 29 4
gpt4 key购买 nike

为什么 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._prop_map_get_['Location'] 返回“(1610874880, 2, (8, 0), (), 'Location', None) 时,为什么 currentTrack.Location 返回文件路径?”它从哪里获取文件路径字符串?

最佳答案

在python中,一个对象可以有一个__getattr__方法。对于不存在的属性的任何属性访问都会调用它。看起来这个对象正在使用 _prop_map_get_ 作为其 __getattr__ 实现的一部分。

由于 __getattr__ 可以进行任意计算来满足属性请求,并且可以为它无法处理的名称引发 AttributeError,因此无法从外部列出所有可用的属性。

关于python - 为什么 dir() 函数未列出某些可调用属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108298/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com