Python staticmethod() 函数
staticmethod() 是 Python 中用于将方法转换为静态方法的内置函数。
静态方法是属于类而不是实例的方法,它不需要访问实例属性或调用实例方法。staticmethod() 可以作为装饰器使用,也可以直接调用。
单词释义: staticmethod 是 static 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
# 使用装饰器定义静态方法(推荐)
@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
代码解析:
- 静态方法使用
@staticmethod装饰器定义。 - 可以像普通函数一样调用,但属于类的命名空间。
- 不需要创建类的实例即可调用。
示例 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
@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
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 内置函数
点我分享笔记