클래스의 속성(Attribute)이란?
Python에서는 거의 모든 것이 객체(Object)입니다. 그리고 모든 객체는 각각의 속성(attribute)과 메서드(method)를 가지고 있습니다. 따라서 속성은 Python의 매우 근본적인 개념이라고 할 수 있습니다.
클래스(class)는 유사한 객체들을 모아놓은 일종의 설계도이며, 클래스 역시 자신만의 속성을 가집니다. 여기서 중요한 점은 클래스 속성(class attribute)과 인스턴스 속성(instance attribute) 사이에 차이가 있다는 것입니다.
- 클래스 속성: 해당 클래스로 생성된 모든 인스턴스들이 공유하는 속성입니다.
- 인스턴스 속성: 각 객체(인스턴스)마다 개별적으로 가지는 속성으로, 다른 인스턴스와 공유되지 않습니다.
dir() 함수로 객체의 속성 목록 확인하기
Python의 내장 함수인 dir()을 사용하면 특정 객체가 가지고 있는 모든 속성과 메서드를 리스트 형태로 확인할 수 있습니다. 아래 예제를 살펴보겠습니다.
>>> s = 'abc' >>> len(dir(s)) 71 >>> dir(s)[:5] ['__add__', '__class__', '__contains__', '__delattr__', '__doc__'] >>> i = 123 >>> len(dir(i)) 64 >>> dir(i)[:5] ['__abs__', '__add__', '__and__', '__class__', '__cmp__'] >>> t = (1,2,3) >>> len(dir(t)) 32 >>> dir(t)[:5] ['__add__', '__class__', '__contains__', '__delattr__', '__doc__']
위 결과를 보면 알 수 있듯이, 문자열(str), 정수(int), 튜플(tuple)과 같은 Python의 기본 데이터 타입조차 수십 개의 속성과 메서드를 내장하고 있습니다.
예를 들어 문자열 'abc'는 총 71개의 속성을 가지며, dir(s)[:5]처럼 슬라이싱을 활용하면 전체 목록 중 처음 다섯 개의 속성만 출력하여 확인할 수 있습니다. 이처럼 dir() 함수는 객체의 구조를 탐색하고 디버깅할 때 매우 유용하게 사용됩니다.