python中的@classmethod

@classmethod是一个装饰器,用于指示一个方法是一个类方法;

        类方法是通过类本身来调用的,而不是通过类的实例来调用。类方法接收的第一个参数是类本身(通常命名为cls),而不是类的实例。

用处:

        创建类的实例。使用类方法作为工厂函数,可以隐藏对象的创建细节,并在创建对象时执行一些额外的逻辑.

        由于类方法接收的是类本身作为第一个参数,因此它们可以用于修改类级别的状态或属性。

代码案例:

class MyClass:  
    # 类级别的变量
    class_variable = 0  
  
    #类方法
    @classmethod  
    def set_class_variable(cls, value):  
        cls.class_variable = value  
  
    # 类方法
    @classmethod  
    def get_class_variable(cls):  
        return cls.class_variable  
  
    # 类方法
    @classmethod  
    def create_instance(cls, value):  
        return cls(value)  
  
    # 类的构造函数
    def __init__(self, value):  
        self.instance_variable = value  
  
# 使用类方法修改类级别的状态  
MyClass.set_class_variable(42)  
print(MyClass.get_class_variable())  # 输出: 42  
  
# 使用类方法作为工厂函数创建类的实例  
instance = MyClass.create_instance(10)  
print(instance.instance_variable)  # 输出: 10

        set_class_variableget_class_variable都是类方法,它们分别用于设置和获取类级别的变量class_variable;

        create_instance是一个类方法,用作工厂函数来创建类的实例。create_instance方法内部调用了类的构造函数__init__来创建实例。

你可能感兴趣的:(编程,python)