Python staticmethod() 函数

Python3 内置函数 Python3 内置函数


staticmethod() 是 Python 中用于将方法转换为静态方法的内置函数。

静态方法是属于类而不是实例的方法,它不需要访问实例属性或调用实例方法。staticmethod() 可以作为装饰器使用,也可以直接调用。

单词释义staticmethodstatic method(静态方法)的缩写。


基本语法与参数

语法格式

staticmethod(function)

参数说明

  • 参数 function
    • 类型: 函数对象
    • 描述: 要转换为静态方法的函数。

函数说明

  • 返回值: 返回一个静态方法对象。
  • 特点: 静态方法不需要 self 参数,可以直接通过类名调用。

实例

示例 1:基础用法

实例

class MathUtils:
    # 使用装饰器定义静态方法(推荐)
    @staticmethod
    def add(a, b):
        return a + b

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

# 直接通过类名调用(不需要创建实例)
result = MathUtils.add(3, 5)
print(result)  # 输出: 8

result = MathUtils.multiply(4, 6)
print(result)  # 输出: 24

运行结果预期:

8
24

代码解析:

  1. 静态方法使用 @staticmethod 装饰器定义。
  2. 可以像普通函数一样调用,但属于类的命名空间。
  3. 不需要创建类的实例即可调用。

示例 2:不使用装饰器

实例

class Temperature:
    @staticmethod
    def celsius_to_fahrenheit(c):
        return c * 9/5 + 32

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

# 调用静态方法
print(Temperature.celsius_to_fahrenheit(0))    # 输出: 32.0
print(Temperature.celsius_to_fahrenheit(100)) # 输出: 212.0
print(Temperature.fahrenheit_to_celsius(32)) # 输出: 0.0

# 也可以通过实例调用
temp = Temperature()
print(temp.celsius_to_fahrenheit(25))  # 输出: 77.0

运行结果预期:

32.0
212.0
0.0
77.0

代码解析:

  • 静态方法常用于工具类,封装与实例无关的函数。
  • 静态方法可以通过类名或实例名调用。

示例 3:工厂模式中的应用

实例

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @staticmethod
    def from_dict(data):
        # 从字典创建 Person 对象
        return Person(data['name'], data['age'])

    @staticmethod
    def create_adult(name):
        # 创建成年人
        return Person(name, 18)

# 使用静态方法创建对象
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age)  # 输出: Tom 20

p2 = Person.create_adult('Jack')
print(p2.name, p2.age)  # 输出: Jack 18

运行结果预期:

Tom 20
Jack 18

静态方法常用于工厂方法,从不同数据源创建对象实例。


Python3 内置函数 Python3 内置函数