@classmethod
- 在普通情况下,不使用类方法对类进行实例化,类本身是不具有记忆性的。只是一个静态模板被套用多次而已。如果我们想让类在每一次实例化之后,都能记载一些记忆就需要用到类方法。
- classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
- @classmethod的作用实际是可以在class内实例化class,一般使用在有工厂模式要求时。作用就是比如输入的数据需要清洗一遍再实例化,可以把清洗函数定义在class内部并加上@classmethod装饰器已达到减少代码的目的。总结起来就是:@class method可以用来为一个类创建一些预处理的实例。
- 第一个参数必须是cls,可以有第二、三…个参数。
- 下述代码中的id_number()就是一个类方法
class Man:
id = 0 # 类变量
def __init__(self, name):
self.name = name
self.id = self.id_number()
@classmethod
def id_number(cls):
cls.id += 1
return cls.id
a = Man('A')
print(a.id)
b = Man('B')
print(b.id)
上述代码输出结果:
1
2