클래스 메서드 데코레이터
Coddy Python 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 64개 중 12번째.
@classmethod 데코레이터는 인스턴스(self) 대신 클래스 자체(cls)를 첫 번째 매개변수로 받는 메서드를 생성합니다.
다음은 클래스 메서드를 포함한 클래스의 예시입니다:
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를 사용하세요. 첫 번째 매개변수는 self가 아니라 cls(클래스 자체)입니다.
치트 시트
@classmethod 데코레이터는 인스턴스(self) 대신 클래스 자체를 첫 번째 매개변수(cls)로 받는 메서드를 생성합니다.
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()
guest = Student.create_guest_student()클래스 메서드는 인스턴스에서도 호출할 수 있습니다:
alice = Student("Alice")
info_from_instance = alice.get_school_info()클래스 속성에 접근해야 하거나 객체를 생성하는 대안적인 방법이 필요할 때 @classmethod를 사용하세요.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.