@staticmethod 是 Python 中的一個裝飾器 (decorator),用來定義靜態方法 (static method)。靜態方法與類別和物件實例無直接關聯,通常用於不需要訪問類別或物件屬性的方法。
class MyClass:
@staticmethod
def static_method(arg1, arg2):
# 不訪問類別或物件屬性
return arg1 + arg2
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
文章有超連結 做得很好欸 超方便知識旁通的!我最近在學Python感謝你😊
謝謝你的感謝!這也是自己學習的筆記 沒想到可以幫助人 覺得開心