簡體   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