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