python中的裝飾器,python裝飾器

來源:互聯網
上載者:User

python中的裝飾器,python裝飾器

    python中的裝飾器可以裝飾函數,也可以裝飾類,功能是向函數或者類添加一些功能。類似於設計模式中的裝飾模式,它可以把裝飾器的功能實現部分和裝飾部分分開,避免類中或者函數中冗餘的代碼。

裝飾器裝飾函數:

def decrator(f1):def newf():print "strings will be connected:"print f1();return newf;@decratordef strconnect():x=raw_input("input the first string");y=raw_input("input the second string");return x+y;strconnect();

    上面的代碼,對函數strconnect加了裝飾器,在裝飾器decrator產生了新的函數newf,newf的函數體調用了f1函數,並且增加了裝飾功能。

裝飾器裝飾類:

def decrator(obj):class newclass():def __init__(self,s):self.tmp=obj(s);def show(self):print "apple is good for your health";print self.tmp.show();return newclass;@decratorclass apple():def __init__(self,s):self.str=s;def show(self):return self.str;t=apple('an apple a day keeps a doctor away');t.show();

    與裝飾一個函數類似,裝飾器也可以裝飾類,裝飾器decrator中產生了新的類newclass,newclass的構造方法多了一個參數s,用於產生被裝飾的類的對象,self.tmp=obj(s)即實現了這個功能。裝飾器中的show函數也是調用了被裝飾的類的show函數,並且增加了裝飾代碼。

    除了自訂的裝飾器,python還提供了內建的裝飾器,如靜態方法和類方法就是通過裝飾器來實現的,有關靜態方法和類方法的說明,在這裡:python靜態方法類方法

    裝飾器裝飾一個函數即可返回一個新的函數,裝飾一個類即可返回一個新的類,擴充了原有函數或者類的功能。



python裝飾器應該怎理解?

所謂裝飾器就是把函數封裝一下,為函數添加一些附加功能,裝飾器就是一個函數,參數為被封裝的函數,返回封裝後的函數:你可以試下:
def d(fp): def _d(*arg, **karg): print "do sth before fp.." r= fp(*arg, **karg) print "do sth after fp.." return r return _d@ddef f(): print "call f"#上面使用@d來表示裝飾器和下面是一個意思#f = d(f)f()#調用f
 
在python裡怎使用裝飾器?

不知道,可能不能在裝飾器跳出主函數吧
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.