【发布时间】:2019-02-07 20:30:21
【问题描述】:
在 Python 2 和 Python 3 中的代码:
class Foo(object):
pass
f = Foo()
f.__call__ = lambda *args : args
f(1, 2, 3)
返回错误Foo object is not callable。为什么会这样?
PS:对于老式类,它可以按预期工作。
PPS:这种行为是有意的(参见接受的答案)。作为一种解决方法,可以在类级别定义一个 __call__,它只转发给另一个成员,并将这个“普通”成员设置为每个实例的 __call__ 实现。
【问题讨论】: