例如,我需要类调用返回字符串。
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__
?
答案 0 :(得分:8)
使用您的示例(有限的用途),您有一类可调用对象。
你现在可以做,就像你做的那样,
>>> o = Foo()
>>> o
<__main__.Foo object at 0x8ff6a8c>
>>> o()
'bar'
予。例如,__call__()
不会使您的类可调用(因为它已经是),但它会为您提供一个可调用的对象。
答案 1 :(得分:5)
在Python中,一切都是对象。 甚至班级。
此外,类是可调用对象。你不必做任何事情来实现这一点,他们就是这样。调用该类会创建一个实例。
设置__call__
方法使实例也可以调用。您可以像调用类(或任何其他函数)一样调用实例。
答案 2 :(得分:4)
In [1]: class A:
...: def __init__(self):
...: print "init"
...:
...: def __call__(self):
...: print "call"
...:
...:
In [2]: a = A()
init
In [3]: a()
call