Python classmethod() 函数

Python3 内置函数 Python3 内置函数


classmethod() 是 Python 中用于将方法转换为类方法的内置函数。

类方法是属于类而不是实例的方法,第一个参数是类本身(通常命名为 cls)。类方法可以访问类的属性,但不能访问实例属性。

单词释义classmethod 是 class method(类方法)的缩写。


基本语法与参数

语法格式

classmethod(function)

参数说明

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

函数说明

  • 返回值: 返回一个类方法对象。
  • 特点: 第一个参数是类本身(cls),不是实例(self)。

实例

示例 1:基础用法

实例

class MyClass:
    class_attr = 0

    @classmethod
    def increment(cls):
        cls.class_attr += 1
        return cls.class_attr

    @classmethod
    def get_count(cls):
        return cls.class_attr

# 通过类调用(不需要创建实例)
print(MyClass.increment())  # 输出: 1
print(MyClass.increment())  # 输出: 2
print(MyClass.get_count())   # 输出: 2

# 也可以通过实例调用(但不常见)
obj = MyClass()
print(obj.increment())  # 输出: 3

运行结果预期:

1
2
2
3

代码解析:

  1. 类方法通过 @classmethod 装饰器定义。
  2. 第一个参数是 cls,代表类本身。

示例 2:工厂方法

实例

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

    @classmethod
    def from_dict(cls, data):
        """从字典创建对象"""
        return cls(data['name'], data['age'])

    @classmethod
    def from_string(cls, s):
        """从字符串创建对象(格式:name-age)"""
        name, age = s.split('-')
        return cls(name, int(age))

    def __str__(self):
        return f"{self.name}, {self.age}岁"

# 使用类方法的工厂模式
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")

print(p1)  # 输出: Tom, 20岁
print(p2)  # 输出: Jerry, 25岁

运行结果预期:

Tom, 20岁
Jerry, 25岁

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


Python3 内置函数 Python3 内置函数