python 之装饰器
Posted zou-ting-rong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 之装饰器相关的知识,希望对你有一定的参考价值。
装饰器是一种增加函数或类的功能的方法,可以快速的给不同的函数或类插入相同的功能。
装饰器的表示语法是在函数或类前面加@符号
1 @disp__ff 2 def dd__ff(): 3 pass
这里的装饰器的名称就是disp__ff,使用装饰器之后,此处定义的函数就可以只定义自己所需要的功能,二装饰器所定义的功能会自动插入到函数中,这样就可以节省大量具有相同功能的函数或类的代码。
要用装饰器来装饰对象,必须先定义装饰器。装饰器的定义与普通函数的定义在形式上完全一致,只不过装饰器函数的参数必须有函数或类对象,然后在装饰器函数中重新定义一个函数或类,最后返回这个新定义的函数或类。
装饰函数
用装饰器装饰函数,首先要定义装饰器,然后使用定义的装饰器来装饰函数。、
代码实例:
1 def aa(fun): #定义一个装饰器 2 def ww(*args,**kwargs): #定义装饰器函数 3 print("开始运行:) 4 fun(*args,**kwargs)#调用被装饰的函数 5 print("运行结束:") 6 return ww #返回装饰函数 7 @aa #装饰函数语句 8 def dd(x): #定义普通函数,被装饰器装饰 9 a = [] 10 for i in range(x): 11 a.append(i) 12 print(a) 13 14 if __name__ == "__main__":#程序入口 15 dd(6)
装饰类
装饰器不仅可以装饰函数,还可以装饰类。定义装饰类的装饰器,需要定义内嵌类的函数并返回新类。
代码实例:
1 def aa(myclass): 2 class innerclass: 3 def __init__(self): 4 self.z = 0 5 self.baozhung = myclass()#实例化被装饰类 6 7 def position(self): 8 self.baozhung.position() 9 print("z",self.z) 10 return innerclass#返回新类 11 @aa 12 class coor: 13 def __init__(self,x - 100,y = 100): 14 self.x = x 15 self.y = y 16 def position(self): 17 print("x",self.x) 18 print("y",self.y) 19 20 if __name__ == "__main__": 21 c = coor() 22 c.position() 23 #运行结果 24 x 100 25 y 100 26 z 0
上述代码中首先定义了一个能够装饰类的装饰器aa;然后定义了一个内嵌类innerclass,用于代替被修饰的类,并返回新的内嵌类,最后实例化普通类时,得到的就是被修饰后的类
以上是关于python 之装饰器的主要内容,如果未能解决你的问题,请参考以下文章