callable
まぁ、コメントに書いた通り呼び出し可能かどうかは callable を使えばわかるんですけど。
で、hasattr(obj, '__call__') でも条件を満たせるかといえばなぜか classic class (new-style でない class) で挙動が異なる。
def f(): pass class C1: pass class C2(object): pass class C3(object): def __call__(self): pass def my_callable(obj): return hasattr(obj, '__call__') for obj in (f, C1, C2, C3(), lambda x: x): print my_callable(obj), callable(obj)
True True False True True True True True True True True True
むぅ。