【Python】__call__

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangdongwei0/article/details/88393746

Python中的有趣语法,只要在定义类型的时候,实现__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()__   这样的调用 

猜你喜欢

转载自blog.csdn.net/wangdongwei0/article/details/88393746