@staticmethod 是 Python 中的一个装饰器 (decorator),用来定义静态方法 (static method)。静态方法与类别和物件实例无直接关联,通常用于不需要访问类别或物件属性的方法。
特点
- 与类别和物件的状态无关。
- 静态方法更像是属于类别的工具函数。
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