类方法装饰器
本课属于 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。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
面向对象编程中的所有课
自己练习: Python 在线编译器