클래스 메서드는 클래스 자체를 첫 번째 인수로 받습니다. 이렇게 하면 먼저 클래스에서 인스턴스를 만들지 않고도 클래스 내에서 메서드를 호출할 수 있습니다. 클래스에 포함된 메서드 선언 전에 데코레이터 @classmethod를 사용하면 메서드에 직접 액세스할 수 있습니다. 다음은 classmethids의 주요 기능입니다.
-
classmethod는 클래스에 바인딩되며 사용할 클래스의 인스턴스화에 의존하지 않습니다.
-
classmethod는 클래스를 수정할 수 있으며 이 클래스는 해당 클래스의 모든 인스턴스에 차례로 전파됩니다.
클래스 메서드 사용
아래 예제에서는 WeekDay라는 클래스를 만들고 그 안에 daynames라는 메서드를 만듭니다. 그런 다음 먼저 클래스를 인스턴스화하지 않고 이 메서드에 액세스합니다. 즉, 클래스에서 개체를 생성하지 않는다는 의미입니다.
예
class WeekDay: day_name = ['Mon','Tue','Wed','Thu','Fri'] # Applying the class method @classmethod def daynames(n): print('The WeekDays are', n.day_name) WeekDay.daynames() # OR WeekDay().daynames()
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
classmethod를 사용하지 않고
클래스 메서드 없이 동일한 결과를 얻으려면 클래스 없이 메서드를 선언할 수 있습니다. 이것은 클래스 메소드가 필요한 이유를 보여줍니다.
예
def daynames(): day_name = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri'] print('The WeekDays are', day_name) daynames()
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
The WeekDays are ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']