总的来说__call__魔法函数将类变为了一个可调用对象。
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
def __call__(self, friend):
print ('My name is %s...' % self.name)
print ('My friend is %s...' % friend)
a = Person("小白", "男")
a("小明")
a.__call__("小明")
输出:
My name is 小白...
My friend is 小明...
My name is 小白...
My friend is 小明...
从上面的输出可以看出,我们在初始化一个类后,由于我们定义了__call__方法,所以我们可以直接将初始化的类a当作可调用对象,进行传参,即a(“小明”),这里意思是和a.call(“小明”)一样的。