python中的裝飾器

2021-09-08 10:24:07 字數 1230 閱讀 6025

python中的裝飾器能夠裝飾函式,也能夠裝飾類,功能是向函式或者類加入�一些功能。類似於設計模式中的裝飾模式,它能夠把裝飾器的功能實現部分和裝飾部分分開,避免類中或者函式中冗餘的**。

裝飾器裝飾函式:

def decrator(f1):

def newf():

print "strings will be connected:"

print f1();

return newf;

@decrator

def 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 self.tmp.show();

return newclass;

@decrator

def __init__(self,s):

self.str=s;

def show(self):

return self.str;

t.show();

與裝飾乙個函式類似,裝飾器也能夠裝飾類,裝飾器decrator中產生了新的類newclass,newclass的構造方法多了乙個引數s,用於生成被裝飾的類的物件,self.tmp=obj(s)即實現了這個功能。裝飾器中的show函式也是呼叫了被裝飾的類的show函式,而且新增�了裝飾**。

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

裝飾器裝飾乙個函式就可以返回乙個新的函式,裝飾乙個類就可以返回乙個新的類,擴充套件了原有函式或者類的功能。

python中的裝飾器

其實去年就開始學python了,零零散散,陸陸續續學了點,期間學習了python web開發,爬蟲系統 但是一些基礎性的知識點長時間不看了就會忘,所以寫個部落格記錄下來,忘了可以隨時檢視,不用回去看 了,希望也能幫助大家學習哈。python中的裝飾器decorator其實是乙個高階函式,它接受乙個函...

Python 中的裝飾器

1.基本概念 問題 裝飾器是什麼?解答 嚴格來說,裝飾器只是語法糖,裝飾器是可呼叫的物件,可以像常規的可呼叫物件那樣呼叫,特殊的地方是裝飾器的引數是乙個函式 問題 裝飾器有什麼特性?解答 裝飾器有 個特性,一是可以把被裝飾的函式替換成其他函式,二是可以在載入模組時候立即執行 def decorate...

python中的 裝飾器

示例 def fun a arg print a arg fun a deffun b print b 輸出 c python34 python.exe c users administrator desktop test.pyab process finished with exit code 0...