Python3筆記042 - 7.8 裝飾器
阿新 • • 發佈:2020-07-26
第7章 面向物件程式設計
- 7.1 面向物件概述
- 7.2 類的定義
- 7.3 類的例項化
- 7.4 訪問限制
- 7.5 繼承
- 7.6 封裝
- 7.7 多型
- 7.8 裝飾器
- 7.9 特殊方法
7.8 裝飾器
Python的類裝飾器:
# 典型場景:進行業務操作前需要先登入成功 def login(cls): print("登入成功") return cls @login class Model(object): def __init__(self): print("model has created") if __name__ == '__main__': model = Model()
login即是裝飾器函式,輸入的cls
是一個類,返回也是一個類。所以其實上文的類裝飾器就相當於:Model = login(Model)
繼承
''' 對於繼承關係,若f裝飾了類A,類B繼承了A,則產生B的物件時仍然會呼叫裝飾器f,但裝飾器f只會修飾類A。 ''' def decorator(num): print(num) def dec2(cls): print(cls) return cls return dec2 def decorator2(cls): print(cls) return cls @decorator(1) class Model(object): test_val = 0 def __init__(self): pass @decorator2 class SubModel(Model): def __init__(self): pass if __name__ == '__main__': model = SubModel() output: 1 <class '__main__.Model'> <class '__main__.SubModel'>