python 装饰器 第九步:使用类来作为装饰器

#第九步:使用类来作为装饰器
class kuozhan:
    #接收装饰器的参数(函数outer)
    def __init__(self,arg):
        print(self,arg)#arg就是la
        self.arg = arg
    #制作一个内部函数(真正的装饰器  函数kuozhan)
    def __call__(self,func):
        print(self,func)#func就是eat函数
        #将func函数存入对象
        self.func = func
        return self.neweat
    #在面向对象过程当中不提倡内使用内部函数,要提到前面
    #定义称为一个成员方法
    def neweat(self):
        # 扩展功能1
        print('饭前洗洗手')
        # 调用基本函数
        self.func()
        # 扩展功能2
        print('饭后溜溜腿')
#基本函数
@kuozhan('la')# 相当于 result = kuozhan("la"), eat = result(eat) reuslt是实例对象 被当做函数调用触发__call__函数
def eat():
    print('吃饭')
#调用函数 eat在某种程度上算是kuozhan类的实例对象 把它当函数调用触发 call 魔术方法
print(eat)
eat()

 

转载于:https://www.cnblogs.com/zhangboblogs/p/8018720.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值