아직 객체가 하나도 없는 상태에서 클래스 이름을 통해 클래스 멤버 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). 클래스 멤버의 아주 중요한 기능은 모든 객체가 클래스 멤버를 공유한다는 점입니다. 모든 객체가 같은 데이터를 가진다면 이를 클래스 멤버로 만들어 공유하면 됩니다.