python语法之__call__()函数

__call__是一个很神奇的特性,只要某个类型中有__call__方法,,我们可以把这个类型的对象当作函数来使用。相当于重载了括号运算符。

举例:

class TestCall(object):
    def __init__(self, name):
        self.name = name
 
    def __call__(self, *args, **kwargs):
        print("self.name: %s. " % self.name, end='   ')
        print('__call__()  is  running ')
 
if __name__ == '__main__':
    call = TestCall(name='xiaoming')
    
    ##可以直接使用call()函数,相当于调用了__call__()函数
    call()  # call.__call__()
 
    call.__call__()
 

结果如下:

self.name: xiaoming.    __call__()  is  running 
self.name: xiaoming.    __call__()  is  running 
 
# call()  就等价于  call.__call()__   这样的调用 
如果有一天我们淹没在茫茫人海中庸碌一生,那一定是我们没有努力活得丰盛
原文地址:https://www.cnblogs.com/yeran/p/10648772.html