Python의 모든 클래스는 별도로 정의하지 않아도 기본적으로 여러 내장 클래스 속성(built-in class attributes)을 가지고 있습니다. 이러한 속성은 일반적인 속성과 마찬가지로 점(.) 연산자를 사용해 언제든 접근할 수 있으며, 클래스의 구조와 정보를 확인하는 데 매우 유용합니다.
Python의 주요 내장 클래스 속성
1. __dict__ — 클래스 네임스페이스 딕셔너리
classname.__dict__는 해당 클래스의 네임스페이스를 담고 있는 딕셔너리입니다. 클래스에 정의된 메서드, 변수 등이 키-값 형태로 저장되어 있어 클래스 내부 구조를 한눈에 파악할 수 있습니다.
2. __doc__ — 클래스 문서 문자열
classname.__doc__는 클래스의 독스트링(docstring), 즉 문서화 문자열을 반환합니다. 클래스 정의 시 작성한 설명 문자열이 저장되며, 별도로 정의하지 않은 경우 None을 반환합니다.
3. __name__ — 클래스 이름
classname.__name__은 클래스의 이름을 문자열로 반환합니다. 동적으로 객체를 다루거나 로깅을 작성할 때 자주 활용됩니다.
4. __module__ — 클래스가 정의된 모듈 이름
classname.__module__은 해당 클래스가 정의된 모듈의 이름을 나타냅니다. 인터랙티브 모드(대화형 셸)에서 실행할 경우 이 값은 "__main__"이 됩니다.
5. __bases__ — 기반(부모) 클래스들의 튜플
classname.__bases__는 해당 클래스가 상속받은 기반 클래스들을 담고 있는 튜플입니다. 상속 관계를 선언한 순서대로 저장되며, 상속받은 클래스가 없다면 빈 튜플 또는 object만 포함될 수 있습니다.
내장 클래스 속성 사용 예제
class Employee:
"""직원 정보를 관리하는 클래스입니다."""
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
print(Employee.__doc__) # 직원 정보를 관리하는 클래스입니다.
print(Employee.__name__) # Employee
print(Employee.__module__) # __main__
print(Employee.__bases__) # (<class 'object'>,)
print(Employee.__dict__) # 클래스 네임스페이스 딕셔너리 출력정리
Python의 내장 클래스 속성은 클래스에 대한 메타 정보를 손쉽게 조회할 수 있게 해주는 강력한 도구입니다. 특히 디버깅, 리플렉션, 동적 프로그래밍을 수행할 때 __dict__, __name__, __bases__ 같은 속성을 적극적으로 활용하면 코드의 가독성과 유지보수성을 크게 높일 수 있습니다.