理解Python裝飾器(一)

python裝飾器

裝飾器是什麼?我也不知道該如何給裝飾器下定義。python

1. 裝飾器是函數,由於從代碼的層面上來講,它就是開發人員定義的一個函數而已;
2. 裝飾器就像是類的繼承同樣,經過裝飾符,來實現函數與函數、函數與類之間的"繼承"
3. 裝飾器是種特殊的語法,經過 `@函數名` 或者 `@類名` 來實現函數或類的繼承,可是
    裝飾器不是繼承,裝飾器裝飾的函數會被當作參數傳遞給裝飾器,這個功能又好像
    C++中的虛函數,裝飾器裝飾的函數用來修改裝飾器自己的功能來實現額外功能的添加。

示例:人與超人

前提:人 - 會走、會說話、會哭、會笑、會吃飯;超人 - 會走、會說、會哭、會笑、會吃飯、會飛web

class man(object):
    def __init__(self, f):
        self.f = f
    def __call__(self):
        print("我會走路")
        print("我會說話")
        print("我會哭")
        print("我會笑")
        print("我會吃飯")
        self.f()

@man
def Super_man():
    print("我是超人,我會飛")

Super_man()

運行結果:編程

理解Python裝飾器(一)

我的見解

裝飾器能夠用來解決上述例子中的一類問題:功能不清楚且會增長。只要定義好裝飾器,
能夠很好的實現代碼的複用提升代碼的可讀性。因此,想要對裝飾器有更加深刻的理解,
必定要多思考,把編程中遇到的能夠用裝飾器解決的問題給解決掉;另外一點就是要多看
別人的代碼,在別人的代碼中找到一些不同的用法,而後思考爲何那麼用,若是合
理就借鑑別人的思路和方法。

Python裝飾器的用語、細節

這部份內容在網上能夠直接搜到,不進行記錄,參考文章中提到的文章均有此模塊的介紹jsp

參考文章

如何理解Python裝飾器? - 知乎
簡單 12 步理解 Python 裝飾器 - 伯樂在線
Python裝飾器簡介 - Bruce Eckel
帶有參數的Python裝飾器 - Bruce Eckelide

相關文章
相關標籤/搜索