Menu
CoddyTech

类方法装饰器

本课属于 Coddy Python 学习旅程的“面向对象编程”单元。第 12 课,共 64 课。

@classmethod 装饰器会创建这样的方法:它们接收类本身作为第一个参数(cls),而不是实例(self)。

下面是一个包含类方法的类示例:

class Student:
    school_name = "Python Academy"
    student_count = 0
    
    def __init__(self, name):
        self.name = name
        Student.student_count += 1
    
    @classmethod
    def get_school_info(cls):
        return f"School: {cls.school_name}, Students: {cls.student_count}"
    
    @classmethod
    def create_guest_student(cls):
        return cls("Guest")

使用类名调用类方法:

info = Student.get_school_info()
print(info)

创建一些学生:

alice = Student("Alice")
bob = Student("Bob")

updated_info = Student.get_school_info()
print(updated_info)

使用类方法作为替代构造函数:

guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())

输出:

School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3

也可以从实例中调用类方法:

alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)

输出:

School: Python Academy, Students: 1

要点:当你需要访问类属性或创建其他对象构造方式时,使用 @classmethod。第一个参数是 cls(类本身),而不是 self。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: Python 在线编译器