Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬의 classmethod()

<시간/>

클래스 메서드는 클래스 자체를 첫 번째 인수로 받습니다. 이렇게 하면 먼저 클래스에서 인스턴스를 만들지 않고도 클래스 내에서 메서드를 호출할 수 있습니다. 클래스에 포함된 메서드 선언 전에 데코레이터 @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']