@staticmethod 是 Python 中的一个装饰器 (decorator),用来定义静态方法 (static method)。静态方法与类别和物件实例无直接关联,通常用于不需要访问类别或物件属性的方法。

特点

  • 不需要 self 或 cls 作为第一个参数。
    • 与类别和物件的状态无关。
    • 静态方法更像是属于类别的工具函数。
  • 可以直接通过类别或物件实例调用。
  • 常用于执行独立的逻辑处理,这些逻辑通常与类别有关但不依赖于它的属性或方法。
  • 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