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