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 之装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python之装饰器

python之装饰器

Python之装饰器

python之装饰器

我要学python之装饰器

Python之----装饰器