__call__使用

__call__

call的作用是使实例能够像一个函数一样被调用,同时不影响实例本身的生命周期(即不影响实例的构造和析构),但call方法可以改变实例内部变量的值

class Test():

    def __init__(self,a,b):
        print("..init...开始了")
        print(self)
        self.a=a
        self.b=b
        print("__init__%s|%s"%(self.a,self.b))
        print("这是init方法执行完了") 
     def __call__(self, a, b):
        print("===")
        self.a=a
        self.b=b
        print("__call__with({},{})".format(self.a,self.b))
#实例化这个类
test=Test(7,8)    #__init__7|8
#通过_call_()来修改类属性值

test(4,5)   # 将实例x看做了一个函数   #__call__with(4,5)
原文地址:https://www.cnblogs.com/longyi2020/p/14448884.html