成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python裝飾器vs裝飾器模式

stackvoid / 1088人閱讀

摘要:希望引以為戒鄭傳裝飾模式如果你了解,你肯定聽過裝飾器模式。在面向?qū)ο笾?,裝飾模式指動態(tài)地給一個對象添加一些額外的職責(zé)。就增加一些功能來說,裝飾模式比生成子類更為靈活。

漫談

如果作為一個Python入門,不了解Python裝飾器也沒什么,但是如果作為一個中級Python開發(fā)人員,如果再不對python裝飾器熟稔于心的話,那么可能并沒有量變積累到質(zhì)變。

我以前也看過很多講python 裝飾器的文章,但是都是看了就忘。一方面是沒有做太多的練習(xí),二是對它的領(lǐng)會不是很深。

希望引以為戒?。?!

鄭傳 裝飾模式

如果你了解Java,你肯定聽過 裝飾器模式。在面向?qū)ο笾校b飾模式指:動態(tài)地給一個對象添加一些額外的職責(zé)。就增加一些功能來說,裝飾模式比生成子類更為靈活。

在設(shè)計模式學(xué)習(xí)----裝飾器模式,我摘取了下面一段使用裝飾器模式的代碼

public class DecoratorPattern {  
  
    /** 
     * @param args the command line arguments 
*/  
    public static void main(String[] args) {  
        // TODO code application logic here  
        Basket basket = new Original();  
        //一個裝飾的過程  
        Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket)));   
        myBasket.show();  
    }  
}

等會注意下 Basket myBasket =new AppleDecorator(new BananaDecorator(new OrangeDecorator(basket))) 這段的寫法

在Python官方文檔PythonDecorators 是這么介紹裝飾器的

What is a Decorator

A decorator is the name used for a software design pattern. Decorators dynamically alter the functionality of a function, method, or class without having to directly use subclasses or change the source code of the function being decorated.

翻一下: 就是裝飾器是一種軟件設(shè)計模式,被用來動態(tài)修改函數(shù)、方法,或者類功能卻不是通過子類,或者修改原代碼實(shí)現(xiàn)。

跟之前是一個意思?。?!

Python Decorator

而Python的裝飾器與之不同,官方這么說:

The "decorators" we talk about with concern to Python are not exactly the same thing as the DecoratorPattern described above. A Python decorator is a specific change to the Python syntax that allows us to more conveniently alter functions and methods (and possibly classes in a future version). This supports more readable applications of the DecoratorPattern but also other uses as well.

Support for the decorator syntax was proposed for Python in PEP 318, and will be implemented in Python 2.4.

翻譯下:Python的 decorators 與 DecoratorPattern并不完全相同。 Python的decorator是一種特殊:在語法上實(shí)現(xiàn)允許我們更靈活地更改方法,或者函數(shù)。

例子:

@classmethod
def foo (arg1, arg2):
    ....

記住這個特殊的語法,后面我們會展示這個強(qiáng)大的語法糖

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41763.html

相關(guān)文章

  • Python裝飾

    摘要:此篇緊接上篇裝飾器裝飾器模式,上篇主要是簡述了裝飾器模式,跟的裝飾器。再來看裝飾器的實(shí)現(xiàn)。這時步輕松搞定裝飾器中的例子還是精妙的。最近學(xué)數(shù)據(jù)結(jié)構(gòu)與算法,寫些裝飾器用來看程序執(zhí)行時間,真是再方便不過了 此篇緊接上篇 Python裝飾器vs裝飾器模式,上篇主要是簡述了裝飾器模式,跟Python的裝飾器。 再來看Python裝飾器的實(shí)現(xiàn)。這里我推薦一篇文章(譯)-12步輕松搞定python裝...

    sunsmell 評論0 收藏0
  • Python裝飾

    摘要:一引用書流暢的書二基本概念問題裝飾器是什么解答嚴(yán)格來說,裝飾器只是語法糖,裝飾器是可調(diào)用的對象,可以像常規(guī)的可調(diào)用對象那樣調(diào)用,特殊的地方是裝飾器的參數(shù)是一個函數(shù)問題裝飾器有什么特性解答裝飾器有個特性,一是可以把被裝飾的函數(shù)替換成其他函數(shù), 一, 引用 [書] 流暢的Python [書] Effective Python 二, 基本概念 showImg(https://segme...

    aisuhua 評論0 收藏0
  • python設(shè)計模式-裝飾模式

    摘要:這種模式我們稱之為裝飾器模式。因?yàn)檠b飾器模式是在給對象增加責(zé)任。以下情況適合使用裝飾器模式在不影響其他對象的情況下,以動態(tài)透明的方式給單個對象添加職責(zé)。 前言 本篇的裝飾器模式不是講解的python中的語法糖 @ 這個裝飾器。而是講解設(shè)計模式中的裝飾器模式。網(wǎng)上很多的實(shí)現(xiàn)都是基于java和c++的。本文則使用python來實(shí)現(xiàn),其中有些實(shí)現(xiàn)可能在python并不需要那樣來寫的,但是思路...

    Yuqi 評論0 收藏0
  • Python學(xué)習(xí)之路26-函數(shù)裝飾和閉包

    摘要:初步認(rèn)識裝飾器函數(shù)裝飾器用于在源代碼中標(biāo)記函數(shù),以某種方式增強(qiáng)函數(shù)的行為。函數(shù)裝飾器在導(dǎo)入模塊時立即執(zhí)行,而被裝飾的函數(shù)只在明確調(diào)用時運(yùn)行。只有涉及嵌套函數(shù)時才有閉包問題。如果想保留函數(shù)原本的屬性,可以使用標(biāo)準(zhǔn)庫中的裝飾器。 《流暢的Python》筆記本篇將從最簡單的裝飾器開始,逐漸深入到閉包的概念,然后實(shí)現(xiàn)參數(shù)化裝飾器,最后介紹標(biāo)準(zhǔn)庫中常用的裝飾器。 1. 初步認(rèn)識裝飾器 函數(shù)裝飾...

    sunny5541 評論0 收藏0
  • 每天一個設(shè)計模式裝飾模式

    摘要:作者按每天一個設(shè)計模式旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用和兩種語言實(shí)現(xiàn)。誠然,每種設(shè)計模式都有多種實(shí)現(xiàn)方式,但此小冊只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式原文地址是每天一個設(shè)計模式之裝飾者模式歡迎關(guān)注個人技術(shù)博客。 作者按:《每天一個設(shè)計模式》旨在初步領(lǐng)會設(shè)計模式的精髓,目前采用javascript和python兩種語言實(shí)現(xiàn)。誠然,每種設(shè)計模式都有多種實(shí)現(xiàn)方式,但此小冊只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式...

    brianway 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<