日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

淺析Python裝飾器以及裝飾器模式

系統 1695 0

漫談

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

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

希望引以為戒!!!

鄭傳

裝飾模式

如果你了解Java,你肯定聽過 裝飾器模式。在面向對象中,裝飾模式指:動態地給一個對象添加一些額外的職責。就增加一些功能來說,裝飾模式比生成子類更為靈活。

在設計模式學習----裝飾器模式,我摘取了下面一段使用裝飾器模式的代碼

            
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.

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

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

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是一種特殊:在語法上實現允許我們更靈活地更改方法,或者函數。

例子:

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

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 达日县| 安阳市| 镇坪县| 哈密市| 潞西市| 合水县| 皮山县| 西宁市| 隆德县| 西畴县| 澄迈县| 遂平县| 太康县| 赤城县| 镇远县| 霍邱县| 北川| 宜州市| 定襄县| 新乡县| 麟游县| 调兵山市| 隆子县| 囊谦县| 伊宁市| 响水县| 邹城市| 射洪县| 龙里县| 雅安市| 亚东县| 中方县| 城口县| 大庆市| 晋城| 镇原县| 连城县| 柏乡县| 麻江县| 津南区| 韶山市|