iT邦幫忙

0

Python 裝飾器 (decorator): @staticmethod

  • 分享至 

  • xImage
  •  

@staticmethod 是 Python 中的一個裝飾器 (decorator),用來定義靜態方法 (static method)。靜態方法與類別和物件實例無直接關聯,通常用於不需要訪問類別或物件屬性的方法。

特點

  1. 不需要 self 或 cls 作為第一個參數。
    • 與類別和物件的狀態無關。
    • 靜態方法更像是屬於類別的工具函數。
  2. 可以直接通過類別或物件實例調用。
  3. 常用於執行獨立的邏輯處理,這些邏輯通常與類別有關但不依賴於它的屬性或方法。
class MyClass:
    @staticmethod
    def static_method(arg1, arg2):
        # 不訪問類別或物件屬性
        return arg1 + arg2

使用場景

  • 當方法不需要訪問類別屬性 (cls) 或物件屬性 (self) 時。
  • 當需要在類別內組織一些輔助工具函數時。

範例 基本用法

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def multiply(a, b):
        return a * b

# 通過類別調用
print(MathUtils.add(3, 5))  # 8
print(MathUtils.multiply(4, 6))  # 24

# 通過實例調用
math_instance = MathUtils()
print(math_instance.add(10, 20))  # 30

與類別無關的輔助函數

靜態方法通常用於與類別有邏輯相關性,但不需要依賴其屬性。

class TemperatureConverter:
    @staticmethod
    def celsius_to_fahrenheit(celsius):
        return celsius * 9 / 5 + 32

    @staticmethod
    def fahrenheit_to_celsius(fahrenheit):
        return (fahrenheit - 32) * 5 / 9

print(TemperatureConverter.celsius_to_fahrenheit(30))  # 86.0
print(TemperatureConverter.fahrenheit_to_celsius(86))  # 30.0

@staticmethod 與 @classmethod 的比較
特性 @staticmethod @classmethod
第一個參數 無 cls(代表類別本身)
訪問類別屬性或方法 無法訪問 可以訪問和操作類別屬性或方法
使用場景 無需訪問類別或物件屬性的工具函數 需要訪問或修改類別屬性,或創建物件的工廠方法

Python 裝飾器 (decorator): @classmethod


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

1 則留言

0
九四帥
iT邦新手 2 級 ‧ 2024-12-22 11:10:46

文章有超連結 做得很好欸 超方便知識旁通的!我最近在學Python感謝你😊

yennefer iT邦新手 5 級 ‧ 2024-12-22 17:07:02 檢舉

謝謝你的感謝!這也是自己學習的筆記 沒想到可以幫助人 覺得開心/images/emoticon/emoticon34.gif

我要留言

立即登入留言