【发布时间】:2012-03-14 18:07:06
【问题描述】:
我使用的是 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与调用foo的__call__属性相同。但是,最后三行似乎表明它们是不同的野兽,因为我更改了 __call__ 属性,但它并没有更改调用 foo() 时返回的值。
谁能解释一下调用foo()和调用foo.__call__()之间的关系?有没有办法修改函数的行为,使 foo() 和 foo.__call__() 现在返回 6 而不是 5?
【问题讨论】:
-
没有理由修改
foo.__call__-- 你可以修改foo! -
尽管如此,这是一种奇怪的行为。好问题
标签: python