我注意到在使用 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/