我使用的是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?