我正在测试 simpleTAL 模板库,它使用 callable 来测试传递给模板的对象是否是函数。callable 的定义说,如果一个对象包含魔法方法,它就是可调用的__call__
。另请参阅Python 中的“可调用”是什么?.
但是,使用以下类定义(python 2.7.4)创建的对象
class H:
def __init__(self, val):
self.a = val
def __getattr__(self, name):
return 'blah'
h = H(1)
callable(h)
将返回真。但是,如果__getattr__
引发 AttributeError,这对系统地执行没有意义,它将返回 False!
有人可以阐明这个问题并可能提供解决方案吗?(我不希望 h 可调用)。