zoukankan      html  css  js  c++  java
  • 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,用于代替被修饰的类,并返回新的内嵌类,最后实例化普通类时,得到的就是被修饰后的类

    笨鸟先飞
  • 相关阅读:
    反向迭代器实现字符串逆序
    排序更新
    快速排序的实现方法,调用sort函数
    第k个素数
    ACM Online Judge
    Hadoop系列(一)开篇简介
    Hadoop系列(番外) hadoop3.1.2的完全分布式部署
    synchronized关键字
    Oracle的运行
    在Oracle下创建数据库,连接数据库
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/12792777.html
Copyright © 2011-2022 走看看