类装饰器的使用

下面就类装饰器写一段代码,用于分析如何用类装饰器为函数装饰额外功能。

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方法时,以达到装饰效果。

猜你喜欢

转载自blog.csdn.net/qq_42672332/article/details/81155600