gpt4 book ai didi

python - callable(obj) 是否尝试调用?

转载 作者:太空宇宙 更新时间:2023-11-04 09:57:09 25 4
gpt4 key购买 nike

我正在探索一个 API,并使用以下方法查看可用的方法,而无需使用 dir() 肉眼搜索所有属性:

methods = [m for m in dir(kt) if callable(getattr(kt, m))]

抛出异常:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/soco/core.py", line 103, in inner_function
raise SoCoSlaveException(message)
soco.exceptions.SoCoSlaveException: The method or property "cross_fade" can only be called/used on the coordinator in a group

好的,所以我不能使用 cross_fade,没关系。但我没有尝试调用它,我只是想看看我是否可以调用它。

我原以为 callable() 可以使用类似于 type() 的方法进行检查,但它似乎只是在尝试进行调用捕获某些类型的异常。

当我尝试 type(kt.cross_fade) 时,我遇到了同样的异常,当我在终端中尝试 >>> kt.cross_fade 时。

所以我想这里有两个问题:callable 是否尝试调用?以及,什么会导致方法“存在”但完全不可用?

最佳答案

callable 不会尝试调用该对象。它仅检查对象是否具有调用运算符的实现。

首先尝试检索属性时发生异常。在 Python 中可以覆盖属性访问以执行几乎任何操作,并且此对象的 cross_fade 属性实现为带有 only_on_master 装饰器的 property如果您尝试检索从站上的属性,则在引发异常的 getter 上。

关于python - callable(obj) 是否尝试调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336026/

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