我使用的是Python 2.7.2。我想了解调用函数和调用函数之间的关系 __call__ 功能的属性。例如,请考虑以下代码
def foo():
return 5
print foo() # ==> 5
print foo.__call__() # ==> 5
foo.__call__ = lambda : 6
print foo() # ==> 5
print foo.__call__() # ==> 6
第一,四行似乎表明调用函数 foo 与调用相同 __call__ 的属性 foo。然而,最后三行似乎表明他们是不同的野兽,因为我改变了 __call__ 属性但它没有改变调用返回的值 foo()。
有人可以解释呼叫之间的关系 foo() 并打电话 foo.__call__()?有没有办法修改函数的行为,以便 foo() 以及 foo.__call__() 现在返回6而不是5?