14. Object introspection

컴퓨터 프로그래밍에서 객체 탐구(introspection)는 프로그램이 실행(런타임)되는 동안 객체의 타입을 결정하는 능력을 의미합니다. 이는 파이썬의 강력한 점 중 하나입니다. 파이썬의 모든 것들은 객체이고 그 객체들을 찾아볼 수도 있죠. 파이썬은 이것들을 지원하는 몇 가지 내장 함수와 모듈들을 제공 해줍니다.

14.1 dir

여기서는 dir에 관해서 배워보고, 객체 탐구에서 어떻게 유용하게 사용할 수 있을 지 알아봅시다.

dir은 객체 탐구를 위해 가장 중요한 함수 중 하나입니다. 객체의 속성(attribute)의 리스트와 메소드를 반환합니다. 예를 들여보겠습니다.

my_list = [1, 2, 3]
dir(my_list)

# ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

위 객체 탐구는 리스트의 모든 메소드 이름을 제공해 줍니다. 메소드 이름을 다시 불러올 필요가 없기 때문에 유용합니다. 만약 어떤 전달 인자도 없이 dir()을 실행하면 현재 스코프내의 모든 이름들을 반환할 것입니다.

14.2 type 과 id

type 함수는 객체의 타입을 반환합니다. 예를 들어

print(type(􏰀􏰀''))
# Output: <type 􏰀str􏰀>

print(type([]))
# Output: <type 􏰀list􏰀>

print(type({}))
# Output: <type 􏰀dict􏰀>

print(type(bool))
# Output: <type 􏰀type􏰀>

print(type(3))
# Output: <type 􏰀int􏰀>

id는 다양한 객체의 유니크한 id를 반환합니다. 예를 들면,

name = "yasoob"
print(id(name))
# Output: 139972439030304

14.3 inspect module

inspect모듈은 또한 살아있는 객체 정보를 알아내기 위한 몇가지 유용한 함수들을 제공합니다. 예를 들어 다음을 실행하여 개체의 멤버를 확인할 수 있습니다.

import inspect
print(inspec.getmembers(str))
# Output: [(􏰀__add__􏰀, <slot wrapper 􏰀__add__􏰀 of ... ...

객체 탐구를 도와주는 몇 가지 다른 메소드들이 있습니다. 원하신다면 그것들을 탐구할 수 있습니다.

results matching ""

    No results matching ""