类装饰器的使用

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

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值