2022-09-18
類裝飾器的定義:
使用一個類作為一個裝飾器,在類里面對已有函式添加其他功能,
類裝飾器使用的一個實體:
1 class MyDecorator(object): 2 def __init__(self,func): 3 self.__func = func 4 5 def __call__(self, *args, **kwargs): 6 print("課已講完") 7 self.__func() 8 9 @MyDecorator 10 def show(): 11 print("快要下課啦") 12 13 show()
說明:
第10-11行,原來的函式
第1-7行,定義了一個類裝飾器,為原來的函式添加其他功能,注意:如果此時是類作為裝飾器的話,之前裝飾器中傳入的函式現在應該放在的位置在“__init__”建構式中,
第3行,為了在下面的代碼中呼叫func函式,所以此處要將傳入的"func"引數作為一個屬性,“self.__func”,在func前面加了兩個下劃線表示將該func屬性作為一個私有屬性,
第5行,為了在下面函式呼叫中直接使用類物件名呼叫,使用此處要使用“__call__”,它的目的是將物件作為一個可呼叫的物件,
第6行,增加的新的功能,
第7行,呼叫“__func()”函式,注意,此處呼叫的是一個函式,而非上面的屬性,因此要加上括號,因為是在類的內部呼叫的本類傳入的引數,所以要使用“self”,
第9行,類裝飾器語法糖,表示給原來的函式增加新的功能,
運行結果圖:
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508995.html
標籤:Python
上一篇:帶有引數的裝飾器
