如何使用__call__?

I15*_*159 3 python

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

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

    def __call__(self):
        return self.bar
Run Code Online (Sandbox Code Playgroud)

Foo调用返回Foo object.

Foo()
<__main__.Foo object at 0x8ff6a8c>
Run Code Online (Sandbox Code Playgroud)

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

glg*_*lgl 8

使用您的示例(有限的用途),您有一类可调用对象.

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

>>> o = Foo()
>>> o
<__main__.Foo object at 0x8ff6a8c>
>>> o()
'bar'
Run Code Online (Sandbox Code Playgroud)

例如,__call__()不会让你的类可调用(因为它已经是),但它会为你提供一个可调用的对象.


Kar*_*tel 5

在Python中,一切都是对象.甚至上课.

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

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