#第九步:使用类来作为装饰器 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()