下面就类装饰器写一段代码,用于分析如何用类装饰器为函数装饰额外功能。
class MyFun(object): 定义一个类
def __init__(self,a): 调用初始INIT方法
self.a=a 将传入参数保存,该处保存的为被装饰函数的地址
print("dayin")
pass
def __call__(self, *args, **kwargs): 定义call方法
print(args,kwargs)
print("修饰装饰用品")
return self.a(args)
@MyFun # test=MyFun(test) 该行函数相当于在定义test函数后添加test = MyFun(test)
def test(bb):
print("原函数")
return bb
# test=MyFun(test) 就是这行
print(test(123)) 改行相当于调用call方法
类装饰器:当创建对象时,直接调用对象(),则会调用类的__call__方法,此时,当调用对象()方法时,会自动调用类的call方法时,以达到装饰效果。