__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)