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

파이썬 dir() 함수 완벽 가이드 – 객체의 속성과 메서드 탐색하기

파이썬의 dir() 함수는 함수, 모듈, 문자열, 리스트, 딕셔너리 등 모든 객체가 가지고 있는 속성(attribute)과 메서드(method)의 목록을 반환합니다. 디버깅이나 코드 탐색 시 매우 유용한 내장 함수로, 이 글에서는 다양한 상황별로 dir()을 활용하는 방법을 예제와 함께 살펴보겠습니다.

1. 인자 없이 dir() 호출하기

별도의 모듈을 임포트하지 않은 상태에서 dir()을 호출하면, 파이썬 프로그램이 시작될 때 기본적으로 생성되는 네임스페이스에 존재하는 이름들의 목록이 출력됩니다.

예제

print(dir())

실행 결과

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

위 결과는 스크립트 실행 환경에서 자동으로 생성되는 특수 변수들(__name__, __file__, __builtins__ 등)을 보여줍니다.

2. 모듈 임포트 및 변수 생성 후 dir()

새로운 모듈을 임포트하거나 변수를 생성하면 해당 이름들이 현재 네임스페이스에 추가되며, dir() 결과에도 함께 나타납니다.

예제

import math

x = math.ceil(10.03)
print(dir())

실행 결과

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'math', 'x']

기본 목록에 math 모듈과 변수 x가 추가된 것을 확인할 수 있습니다.

3. 특정 모듈에 dir() 적용하기

모듈을 인자로 전달하면 그 모듈 내부에 정의된 메서드와 속성을 한눈에 확인할 수 있습니다. 아래 예제는 math 모듈에서 사용 가능한 멤버들을 조회합니다.

예제

import math

print(dir(math))

실행 결과

['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', ... , 'nan', ... , 'trunc']

삼각함수(sin, cos, tan)부터 올림 연산(ceil), 절사(trunc)까지 math 모듈의 다양한 기능을 빠르게 파악할 수 있습니다.

4. 사용자 정의 클래스에 dir() 적용하기

dir()은 내장 객체뿐만 아니라 사용자가 직접 작성한 클래스의 인스턴스에도 적용할 수 있습니다. 또한 클래스 내부에 __dir__() 던더(dunder) 메서드를 정의하면, dir() 호출 시 반환될 목록을 직접 커스터마이징할 수 있습니다.

예제

class moviecount:

    def __dir__(self):
        return ['Red Man', 'Hello Boy', 'Happy Monday']

movie_dtls = moviecount()

print(dir(movie_dtls))

실행 결과

['Happy Monday', 'Hello Boy', 'Red Man']

__dir__() 메서드가 반환한 리스트가 그대로 출력되며, 참고로 dir()은 항상 알파벳 순으로 정렬된 결과를 반환한다는 점도 기억해 두면 좋습니다.

정리

dir()은 인자 없이 호출하면 현재 스코프의 이름 목록을, 객체를 인자로 전달하면 해당 객체의 속성과 메서드 목록을 반환합니다. 모듈이나 라이브러리의 구조를 빠르게 파악해야 할 때 활용하면 개발 생산성을 크게 높일 수 있습니다.