参见英文答案 > Python functions and their __call__ attribute 1个
这是我到目前为止正在使用的内容
def f(n):
return n
f.__call__ = lambda n: n + 1
print f(2) #I expect an output of 3 but get an output of 2
我对实现所需输出的另一种方式不感兴趣.相反,出于教育目的,我想知道为什么像我所做的那样压倒__call__,并不像我期望的那样工作.
最佳答案
这似乎是由于ceval.c中函数类型的特殊大小,在call_function中:
if (PyFunction_Check(func))
x = fast_function(func,pp_stack,n,na,nk);
else
x = do_call(func,nk);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。