如何使用call帴?

2021-05-13 14:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我需要类调用返回字符串。在

class Foo(object):
    def __init__(self):
        self.bar = 'bar'

    def __call__(self):
        return self.bar

Foo调用返回Foo object。在

^{pr2}$

我该如何处理返回字符串或其他类?如何使用__call__?在

3条回答
网友
1楼 ·
In [1]: class A:
   ...:     def __init__(self):
   ...:         print "init"
   ...:         
   ...:     def __call__(self):
   ...:         print "call"
   ...:         
   ...:         

In [2]: a = A()
init

In [3]: a()
call
网友
2楼 ·

在Python中,一切都是一个对象。偶数类。在

此外,类是可调用的对象。你不需要做任何事情来实现这一点,他们就是这样。调用类将创建一个实例。在

设置__call__方法使实例也可调用。调用实例的方式与调用类(或任何其他函数)的方式相同。在

网友
3楼 ·

对于您的示例(用处有限),您有一个可调用对象类。在

你现在可以做了,就像你做的那样

>>> o = Foo()
>>> o
<__main__.Foo object at 0x8ff6a8c>
>>> o()
'bar'

也就是说,__call__()并不能使你的类可调用(因为它已经存在),但它给你一个可调用的对象。在

相关问题