装饰器 将类作为装饰器 (用类做装饰器) 1234567891011121314151617181920212223242526272829303132333435#定义类作为装饰器'''1.可以带有区分或者使用的参数arg2.具有接受基本函数传入的参数func3.定义未来的函数 inner'''class Outer: #初始化魔术方法 def __init__(self,arg): #相当与outer函数 #接受的参数为了其他成员方法可以使用 存入对象中 self.arg = arg #一定要具有__call__魔术方法使得对象可以当作函数使用 def __call__(self,func):#[这是装饰器的本体 相当于 decor函数] #将call接受的参数func 存入对象 self.func = func #返回内部函数inner return self.inner # 定义内部函数inner #将inner作为类的方法存在 def inner(self): # 增加功能 print('抱抱') # 基本功能 self.func() # 增加功能2 print('举高高')#基本函数@Outer('ai') #@类() ->#@对象【对象可以当作函数使用】def love(): print('亲亲')#调用函数love() 为类添加装饰器 1234567891011121314151617181920212223#定义装饰器def decor(cls): #定义内部信息(相当于原来的inner) def inner(): #产生Human类的对象 [相当于基本功能] obj = cls() #添加内容 【相当于增加功能】 obj.age = 1 obj.sex = 'man' #返回对象 return obj #返回inner函数 return inner#定义基本类@decorclass Human: pass#使用类 实例化对象ren = Human() #相当于调用Human函数 得到了一个结果【对象】print(ren)print(ren.__dict__) 多层装饰器嵌套 123456789101112131415161718192021222324252627282930313233#定义装饰器1def decor1(func): #定义内部函数 def inner(): #增加功能1 print('抱抱') #调用基本功能 func() #增加功能2 print('举高高') #返回内部函数 return inner#定义装饰器2def decor2(func): #定义内部函数 def inner(): #增加功能 print('转转') #基本功能 func() #增加功能2 print('笑一笑') #返回内部函数 return inner#定义基本函数@decor2@decor1def love(): print('亲亲')#调用函数love()