__call__可以在Python中返回一些内容吗?

时间:2016-01-04 19:51:07

标签: python

我试图在这样的代码中理解一些程序:

class foo(object):
    def __init__(self):
        # some initializations 
        pass

    def __call__(self, a, b):
        return a+b

x = foo()
x(2, 3)

__call__内的回复是错误吗?它不会引发任何错误,但我们如何才能在__call__中访问返回值?

1 个答案:

答案 0 :(得分:3)

是的,您绝对可以从__call__返回一个值,该值将用作调用本身的返回值。

使用您的示例:

class foo(object):
    def __init__(self):
        # some initializations 
        pass

    def __call__(self, a, b):
        return a+b

obj = foo()
print obj(1, 2) # Prints `3`