有关于魔术方法__call__的使用场景,我也是查找了很多资料,下面介绍一下心得
魔术方法是指在某个情况下自动触发的方法
call
触发时机:将类的实例对象当做函数调用时,会自行触发
作用:常用语归结类/对象的操作步骤,方便后期的调用
案例:
class Demo():
name = None
age = None
#魔术方法之初始化
def init(self,name,age):
self.name = name
self.age = age
#魔术方法之__call__方法
def call(self,name,age):
self.name = name
self.age = age
#实例化对象(此处传值是因为初始化方法中,需要对参数进行赋值)
d = Demo(‘李四’,33) #初始化方法触发时机:实例化对象后触发
print(d.name) #此处打印结果是“李四”
#这里的d是上面实例化之后的对象,按照方法的参数传入方法调用会直接执行类中的__call__方法
d(‘张三’,23)
print(d.name) #此处打印结果是张三
注意:
如果类中没有__call__方法,将对象当做函数调用会出现 错误信息:‘Demo’ object is not callable,