繁体   English   中英

如何使用__call__?

[英]How to use __call__?

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

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

    def __call__(self):
        return self.bar

Foo调用返回Foo object

Foo()
<__main__.Foo object at 0x8ff6a8c>

我应该怎么做类返回字符串或其他? 如何使用__call__

通过您的示例(用途有限),您有一类可调用对象。

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

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

即, __call__()不会使您的类可调用(因为它已经是),但它为您提供了一个可调用对象。

在 Python 中,一切都是对象。 连班

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

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

In [1]: class A:
   ...:     def __init__(self):
   ...:         print "init"
   ...:         
   ...:     def __call__(self):
   ...:         print "call"
   ...:         
   ...:         

In [2]: a = A()
init

In [3]: a()
call

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM