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

파이썬 클래스의 내장 속성 완벽 정리 (__dict__, __doc__, __name__ 등)

파이썬(Python)에서 정의하는 모든 클래스는 별도로 선언하지 않아도 자동으로 생성되는 내장(built-in) 속성들을 가지고 있습니다. 이러한 속성은 일반적인 속성과 마찬가지로 점(.) 연산자를 통해 언제든 조회할 수 있으며, 클래스의 구조와 메타 정보를 동적으로 확인하는 데 매우 유용합니다.

주요 내장 속성

  • __dict__ — 클래스의 네임스페이스 전체가 담겨 있는 딕셔너리입니다.
  • __doc__ — 클래스의 문서화 문자열(docstring)입니다. 정의되어 있지 않으면 None을 반환합니다.
  • __name__ — 클래스의 이름입니다.
  • __module__ — 해당 클래스가 정의된 모듈의 이름입니다. 인터랙티브 모드에서 실행하면 "__main__"이 됩니다.
  • __bases__ — 상속받은 기반 클래스(부모 클래스)들이 기반 클래스 목록에 나열된 순서대로 저장된 튜플입니다. 상속받은 클래스가 없으면 빈 튜플 ()이 됩니다.

예제 코드

다음은 Employee 클래스를 정의하고, 이 클래스가 가진 모든 내장 속성을 출력하는 예제입니다.

#!/usr/bin/python3

class Employee:
    '모든 직원을 위한 공통 기반 클래스'
    empCount = 0

    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        Employee.empCount += 1

    def displayCount(self):
        print("총 직원 수: %d" % Employee.empCount)

    def displayEmployee(self):
        print("이름 :", self.name, ", 급여 :", self.salary)

print("Employee.__doc__:", Employee.__doc__)
print("Employee.__name__:", Employee.__name__)
print("Employee.__module__:", Employee.__module__)
print("Employee.__bases__:", Employee.__bases__)
print("Employee.__dict__:", Employee.__dict__)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 함수 객체의 메모리 주소는 실행 환경마다 다르게 표시될 수 있습니다.

Employee.__doc__: 모든 직원을 위한 공통 기반 클래스
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'empCount': 0,
'displayCount': <function Employee.displayCount at 0x7f8a1c2d4940>,
'displayEmployee': <function Employee.displayEmployee at 0x7f8a1c2d4a60>,
'__doc__': '모든 직원을 위한 공통 기반 클래스',
'__init__': <function Employee.__init__ at 0x7f8a1c2d4820>}

내장 속성의 실무 활용

이러한 내장 속성은 단순히 정보를 확인하는 용도를 넘어 실무에서 폭넓게 활용됩니다. __dict__를 사용하면 클래스나 객체가 어떤 멤버를 가지고 있는지 런타임에 동적으로 검사할 수 있어 디버깅과 리플렉션 작업에 유용합니다. __bases__를 활용하면 상속 구조를 프로그래밍 방식으로 탐색할 수 있으며, __doc__은 help() 함수 및 자동 문서화 도구와 연동되어 코드 문서를 관리하는 데 기여합니다.