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...