객체가 멤버와 메서드를 가질 수 있는 것처럼 클래스도 멤버와 메서드를 가질 수 있습니다. 클래스가 가지는 멤버를 클래스 멤버(class member)라고 하고, 메서드를 클래스 메서드(class method)라고 합니다. 예제 코드를 보죠.
코드 6-14 oop1/oop1_2/cls_mem_met.py ①
class A: c_mem = 10 #1 @classmethod def cls_f(cls): #2 print(cls.c_mem) def __init__(self, num): self.i_mem = num #3 def ins_f(self): print(self.i_mem)
클래스 선언 바로 아래에서 멤버를 선언했습니다. 인스턴스 멤버 선언(#3)과 비교해 보면 차이를 알 수 있습니다. c_mem과 같은 멤버를 클래스 멤버라고 합니다(#1). 클래스 멤버는 클래스가 가지는 멤버입니다. cls_f() 메서드 위에 데코레이터 @classmethod가 있습니다(#2). 이를 통해 이 메서드는 클래스 메서드가 됩니다. 클래스 메서드는 클래스가 가진 메서드입니다. 클래스 멤버와 메서드가 가지는 특징을 알아보겠습니다.
TIP 데코레이터에 관해서는 파이썬 문법 책을 참고하세요.
코드 6-15 oop1/oop1_2/cls_mem_met.py ②
if __name__ = = "__main__": print(A.c_mem) #4 A.cls_f() #5