python - 在 Python 的可调用函数中使用 for 循环并手动执行时结果不一致

标签 python python-2.x

我注意到在使用 callable() 函数时出现不一致的行为,代码如下:

>>> x = 4
>>> for i in dir(x):
...    if '__' in i:
...        continue
...    else:
...        print i, callable(i)

我得到以下结果:

bit_length False
conjugate False
denominator False
imag False
numerator False
real False

但是当手动使用callable()函数时:

>>> callable(x.bit_length)
True

我在这里错过了什么?

最佳答案

目录(对象) returns a list of strings ,所以你基本上做的是 callable("bit_length"),这显然是错误的(字符串不可调用)。

您可能想要做的是:

for name in dir(obj):
    if "__" in name:
        continue
    attr = getattr(obj, name)
    print name, callable(attr)

关于python - 在 Python 的可调用函数中使用 for 循环并手动执行时结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32134575/

相关文章:

python - 400 错误请求 : KeyError:

python - 从 shell 命令获取输出的最 Pythonic 方法

python - 拆分或替换 - 去掉两个字符串之间和周围的撇号和逗号

python - Try-Except-Finally 语句的过时书籍描述

python - PyTorch 相当于 numpy reshape 函数

python - 调查未知 Python API 的简单方法

python - 标准化矩阵python的行

python - 将 IPv6 转换为 long,无需外部库

python - 在 Pycharm 上流浪调试 python/django

python - 如何将 Tweepy 对象中的数据提取到 Pandas 数据框中?