Dev/python

[python] 어떤 객체가 갖고 있는 속성 및 메서드 목록을 확인하고 싶을 때, dir() 함수

bskyvision.com 2023. 8. 28. 10:16

파이썬에서 어떤 객체가 갖고 있는 속성 및 메서드 목록을 확인하고 싶을 때는 dir() 함수를 사용할 수 있습니다. 

 

우선 간단한 문자열 객체를 만들고 그 문자열 객체가 어떤 속성과 메서드를 갖고 있는지 dir() 함수를 통해 확인해보겠습니다. 

 

text = "Hello, Python"

print(dir(text))

# ['__add__', '__class__', '__contains__', '__delattr__', 
# '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 
# '__getattribute__', '__getitem__', '__getnewargs__', 
# '__gt__', '__hash__', '__init__', '__init_subclass__', 
# '__iter__', '__le__', '__len__', '__lt__', '__mod__', 
# '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', 
# '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', 
# '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 
# 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 
# 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 
# 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 
# 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 
# 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 
# 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 
# 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 
# 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

자주 사용하는 join(), find(), lower(), upper(), strip() 등 다양한 메서드를 갖고 있는 것을 알 수 있습니다. 

 

이번에는 직접 만든 클래스로 찍어낸 객체의 속성과 메서드 목록을 dir() 함수로 확인해보겠습니다. 저는 Person이라는 클래스를 정의한 후에 p1이라는 객체를 하나 생성했습니다. 

 

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"저는 {self.age}살, {self.name}입니다.")


p1 = Person('홍길동', 19)
print(dir(p1)) 

# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', 
# '__eq__', '__format__', '__ge__', '__getattribute__', '__getstate__', 
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', 
# '__lt__', '__module__', '__ne__', '__new__', '__reduce__', 
# '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
# '__subclasshook__', '__weakref__', 'age', 'introduce', 'name']

 

보시면 기본적으로 제공되는 메서드들 외에 age, name 속성과 introduce 메서드가 존재하는 것을 확인할 수 있습니다.