1、含义
使用@classmethod修饰的方法。类方法至少接收一个参数,这个参数按照惯例被命名为cls,代表类本身。使得类方法能够执行与类本身紧密相关的操作,而不需要类的实例
2、语法格式
# 语法格式 @classmethod def 方法名(cls, 形参): 方法体
# 示例
class Person:
age = 18 # 类属性
# 定义方法,修改类属性
def set_age(self, age): # 实例方法:带有self参数,代表对象本身
# self.age = age # 实例属性:仅作用于当前对象
Person.age = age
# 弊端:
# (1)需要通过对象调用
# (2)方法内部没有使用到对象
# (3)方法中有引用到类,一旦类名更改,引用类的位置也需相应更改,不利于代码的可维护性
# 定义类方法
@classmethod
def set_age2(cls, age): # 类方法:带有cls参数,代表类本身
print("cls:", cls)
cls.age = age
# 类方法可以通过类调用,也可以通过对象调用
Person.set_age2(20)
print("Person:", Person)
person = Person()
person.set_age(20)
print(Person.age)
person.set_age2(28)
print(Person.age)注意:Python中将代表类本身的参数命名为cls是一种广泛遵循的约定,这样做有助于提高代码的可读性和一致性。然而,这并不是Python语言的硬性要求,开发人员可以根据需要选择其他名称来替代cls,但这样做不推荐,因为这会降低代码的可读性、可维护性和可扩展性。
3、应用场景
类方法一般和类属性配合使用,当方法中需要使用到类(如使用类属性、调用其他类方法或实例化对象)时,可以考虑将该方法定义为类方法。
著作权归文章作者所有。 未经作者允许禁止转载!