iT邦幫忙

0

Python 的裝飾器(Decorator)目錄

  • 分享至 

  • xImage
  •  

Python 的裝飾器(Decorator)目錄文章:
Python 裝飾器 (decorator): @classmethod
Python 裝飾器 (decorator): @staticmethod
Python 裝飾器 (decorator): @property 與 @setter
Python 裝飾器 (decorator) @abstractmethod

什麼是 Python 的裝飾器(Decorator)?

裝飾器(Decorator)是 Python 中一種用來修改函數、方法或類的行為的設計模式。它可以在不改變原始代碼的情況下,對函數或類進行擴展或增強。裝飾器本質上是一個接受函數或類作為輸入,並返回一個新函數或類的高階函數。

為什麼需要裝飾器?

裝飾器的主要用途是提高代碼的可重用性和可讀性,尤其在需要執行**相同的邏輯操作(如權限檢查、日誌記錄、性能分析等)**時非常有用。

  • 減少重複代碼:通過裝飾器實現功能共享。
  • 分離關注點:將功能邏輯與業務邏輯分離,讓代碼更清晰。
  • 動態添加功能:可以根據條件在運行時動態地為函數或類添加行為。

裝飾器的語法

裝飾器通過在函數或類定義前加上 @decorator_name 的語法糖來使用。

@decorator_name
def my_function():
    pass
def my_function():
    pass

my_function = decorator_name(my_function)

更多詳細裝飾器 (decorator)文章:
Python 裝飾器 (decorator): @staticmethod
Python 裝飾器 (decorator): @classmethod
Python 裝飾器 (decorator): @property 與 @setter
Python 裝飾器 (decorator) @abstractmethod

裝飾器 功能描述 適用範例 範例簡化代碼
@staticmethod 將方法定義為靜態方法,與實例無關,不需要 selfcls 不需要訪問類或實例屬性時使用 @staticmethoddef greet(): print("Hello!")
@classmethod 將方法定義為類方法,第一個參數是類本身(cls 訪問或修改類屬性時使用 @classmethoddef set_value(cls, val): cls.val = val
@property 將方法定義為屬性,允許通過屬性語法訪問 定義只讀屬性或控制屬性訪問 @propertydef value(self): return self._value
@functools.wraps 保留被裝飾函數的原始名稱和文檔字串(__name____doc__ 自定義裝飾器時使用 @wraps(func)
@abstractmethod 定義抽象方法,強制子類實現該方法 設計抽象類時使用 @abstractmethoddef calculate(self): pass
@lru_cache 使用內存緩存提高函數執行效率 頻繁調用且輸出相同的函數(如遞歸) @lru_cache(maxsize=128)
@dataclass 自動生成類的初始化方法及其他特性,簡化封裝數據的類 封裝數據時使用 @dataclassclass Point: x: int; y: int
自定義裝飾器 動態為函數或方法添加功能 記錄日誌、性能分析等功能 @log_timedef process_data(): pass

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言