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

Python에서 객체의 소스 코드를 확인하는 방법 – inspect.getsource() 완벽 가이드

Python에서는 inspect 모듈의 getsource() 메서드를 사용하여 함수나 클래스 등 객체의 소스 코드를 손쉽게 확인할 수 있습니다.

inspect.getsource(object)

getsource() 메서드란?

inspect.getsource()는 인자로 전달된 객체에 대한 소스 코드 텍스트를 반환합니다. 인자로 사용할 수 있는 객체는 다음과 같습니다.

  • 모듈(module)
  • 클래스(class)
  • 메서드(method)
  • 함수(function)
  • 트레이스백(traceback)
  • 프레임(frame)
  • 코드 객체(code object)

반환되는 소스 코드는 하나의 문자열(single string) 형태이며, 소스 코드를 가져올 수 없는 경우에는 IOError 예외가 발생합니다.

소스 코드를 가져올 수 없는 경우

다음과 같은 상황에서는 객체의 소스 코드를 검색할 수 없습니다.

  • 함수가 문자열(string)이나 스트림(stream)으로부터 컴파일된 경우
  • 컴파일된 파일(.pyc 등)에서 임포트한 경우

즉, 실제 .py 소스 파일에 존재하는 객체만 소스 코드를 조회할 수 있습니다.

사용 예제

inspect 모듈을 임포트한 후, 아래와 같이 스크립트에 정의된 클래스의 소스 코드를 출력할 수 있습니다.

# baz.py
import inspect

class Foo:
    def bar(self):
        print('Hello')

print(inspect.getsource(Foo))

실행 결과

class Foo:
    def bar(self):
        print('Hello')

위 실행 결과에서 볼 수 있듯이, inspect.getsource()는 해당 클래스가 정의된 소스 코드를 그대로 문자열로 반환합니다. 이를 활용하면 디버깅, 문서화, 동적 코드 분석 등 다양한 용도로 객체의 원본 코드를 프로그램 내에서 확인할 수 있습니다.