Menu
Coddy logo textTech

클래스 메서드 데코레이터

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를 사용하세요.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Object Oriented Programming의 모든 레슨