欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python設(shè)計模式之裝飾器模式

 更新時間:2022年05月11日 08:44:15   作者:??圖圖加油????  
這篇文章主要介紹了python設(shè)計模式之裝飾器模式,文章基于python得設(shè)計模式資料展開飾器模式得詳細(xì)資料,具有一定的參考價值,需要的小伙伴可以參考一下

裝飾器模式

裝飾器模式解決什么問題?

  • 增加新功能,且不改變原有功能和代碼
  • 選配,根據(jù)不同情況,動態(tài)調(diào)整功能

裝飾器,顧名思義,就是用來裝飾其他實物,增加被裝飾物的功能而不改變被裝飾物。這就像我們買車,同一款車型,有很多功能是選配的,但是車的核心功能不變。我們可以在購買時,根據(jù)需要選配不同的配置。

如何實現(xiàn)?

想象一下,你是一個裝修工,如果要裝飾一輛車,那么你首先需要有一輛車,而且在裝飾過程中,你不能夠改變車原有的功能(接口)。

如類圖所示:

  • 核心功能Core和所有裝飾器都必須實現(xiàn)Interface接口
  • 所有裝飾器以組合的方式保存接口實例
class Core:
    def some_action():
        pass

class Decorator:
    def __init__(self,core):
        self.core = core

    def some_action():
        ....
        self.core.some_action()
        .....

python 裝飾器語法糖

裝飾器太常用了,python專門的語法糖簡化了裝飾器的使用。最外層函數(shù)接收一個函數(shù)對象并返回內(nèi)層函數(shù),內(nèi)層函數(shù)是正真的執(zhí)行函數(shù)。

# 裝飾器定義
def decorator(func):
    def wrapper(*args,**kwargs):
        .....
        result = func(*args,**kwargs)
        ....
        return result
    return wrapper
 # 裝飾器使用
 @decorator
 def func():
     pass

雖然形式變了,但是實質(zhì)沒有變:保存接口實例,實現(xiàn)相同的接口。

  • 保存接口實例容易理解,因為傳入了函數(shù)func對象。
  • 實現(xiàn)相同的接口怎么理解?語法糖@xxxx的操作等價于func = decorator(func),即將內(nèi)層函數(shù)重命名了原函數(shù)名。

到此這篇關(guān)于python設(shè)計模式之裝飾器模式的文章就介紹到這了,更多相關(guān)python裝飾器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 實例講解Python中g(shù)lobal語句下全局變量的值的修改

    實例講解Python中g(shù)lobal語句下全局變量的值的修改

    global是Python中的一個關(guān)鍵字用來,聲明一個局部變量為全局變量,這里我們來以實例講解Python中g(shù)lobal語句下全局變量的值的修改,需要的朋友可以參考下.
    2016-06-06
  • Python實現(xiàn)數(shù)據(jù)結(jié)構(gòu)線性鏈表(單鏈表)算法示例

    Python實現(xiàn)數(shù)據(jù)結(jié)構(gòu)線性鏈表(單鏈表)算法示例

    這篇文章主要介紹了Python實現(xiàn)數(shù)據(jù)結(jié)構(gòu)線性鏈表(單鏈表)算法,結(jié)合實例形式分析了Python單鏈表的定義、節(jié)點插入、刪除、打印等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 淺談Python中的模塊

    淺談Python中的模塊

    這篇文章主要介紹了Python中的模塊相關(guān)知識,文中代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • python使用OpenCV實現(xiàn)多目標(biāo)跟蹤

    python使用OpenCV實現(xiàn)多目標(biāo)跟蹤

    這篇文章主要介紹了python使用OpenCV實現(xiàn)多目標(biāo)跟蹤,如何在OpenCV中使用MultiTracker類實現(xiàn)多目標(biāo)跟蹤API。在深入了解詳細(xì)信息之前,請查看下面列出的關(guān)于目標(biāo)跟蹤的帖子,以了解在OpenCV中實現(xiàn)的單個目標(biāo)跟蹤器的基礎(chǔ)知識,需要的朋友可以參考一下
    2022-04-04
  • python動態(tài)性強類型用法實例

    python動態(tài)性強類型用法實例

    這篇文章主要介紹了python動態(tài)性強類型用法,對比C#實例分析了python動態(tài)性強類型的使用方法,需要的朋友可以參考下
    2015-05-05
  • Pycharm安裝各種庫(第三方庫)的兩種方法

    Pycharm安裝各種庫(第三方庫)的兩種方法

    這篇文章主要給大家介紹了關(guān)于Pycharm安裝各種庫(第三方庫)的兩種方法,Pycharm中通常需要安裝很多第三方庫,才可以使用相應(yīng)的拓展功能,需要的朋友可以參考下
    2024-01-01
  • PyTorch 對應(yīng)點相乘、矩陣相乘實例

    PyTorch 對應(yīng)點相乘、矩陣相乘實例

    今天小編就為大家分享一篇PyTorch 對應(yīng)點相乘、矩陣相乘實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解

    python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Xception模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python 200行代碼實現(xiàn)一個滑動驗證碼過程詳解

    Python 200行代碼實現(xiàn)一個滑動驗證碼過程詳解

    這篇文章主要介紹了Python 200行代碼實現(xiàn)一個滑動驗證碼過程詳解,各種各樣的驗證碼,比較高級的有滑動、點選等樣式,看起來好像挺復(fù)雜的,但實際上它們的核心原理還是還是很清晰的,本文章大致說明下這些驗證碼的原理以及帶大家實現(xiàn)一個滑動驗證碼
    2019-07-07
  • 在Python的Flask框架中使用模版的入門教程

    在Python的Flask框架中使用模版的入門教程

    這篇文章主要介紹了在Python的Flask框架中使用模版的入門教程,模版的使用是Flask使用當(dāng)中的基礎(chǔ),需要的朋友可以參考下
    2015-04-04

最新評論