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 메서드가 존재하는 것을 확인할 수 있습니다.