더북(TheBook)

아직 객체가 하나도 없는 상태에서 클래스 이름을 통해 클래스 멤버 c_mem에 접근하고(#4) 클래스 메서드 cls_f()를 호출합니다(#5). 클래스 멤버와 클래스 메서드는 클래스가 가진 멤버와 메서드이므로 객체가 없어도 클래스를 통해 접근하거나 호출할 수 있습니다. 객체 지향 패러다임이 꺼리는 전역 변수와 전역 함수를 클래스 멤버와 클래스 메서드를 이용해 대체할 수 있습니다. 클래스 멤버와 클래스 메서드의 또 다른 특징은 객체에서도 접근하거나 호출할 수 있다는 점입니다.


TIP 파이썬에서 전역 함수를 대체하려면 클래스 메서드보다 정적 메서드(static method)가 더 어울릴니다. 정적 메서드와 클래스 메서드의 차이는 4.4절의 잠깐만요를 참고하세요.


코드 6-16 oop1/oop1_2/cls_mem_met.py ③

if __name__ = = "__main__":
    print(A.c_mem)
    A.cls_f()

    a = A(20)      #6
    print(a.c_mem) #7
    a.cls_f()      #8


객체를 생성하고(#6) 객체를 통해 클래스 멤버에 접근합니다(#7). 그런 다음 객체를 통해 클래스 메서드를 호출합니다(#8). 클래스 멤버의 아주 중요한 기능은 모든 객체가 클래스 멤버를 공유한다는 점입니다. 모든 객체가 같은 데이터를 가진다면 이를 클래스 멤버로 만들어 공유하면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.