Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 내장 클래스 속성 완벽 정리: __dict__, __doc__, __name__부터 __bases__까지

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__ 같은 속성을 적극적으로 활용하면 코드의 가독성과 유지보수성을 크게 높일 수 있습니다.