[Python]vars(), dir() 란?

Date:     Updated:

카테고리:

vars()

vars(object)

  • 사용된 클래스의 객체에 대한 dictionary를 반환한다.
  • argument 없이 호출 될 때 현재 local symbol table에 일치하는 dictionary를 반환한다.
  • argument로 모듈, 클래스, 클래스 인스턴스 객체( dict 속성을 가진 모든것) 등이 건내진다면 그 객체의 symbol table에 일치하는 dictionary를 반환한다.
  • 내장된 인스턴스 타입들은 dict 속성이 없으므로, 내장된 인스턴스타입에서 사용될 때 에러를 발생시킨다.

다시 말해 vars() 함수는 객체가 존재하는 경우 객체의 dict 속성을 반환한다. Python에서 객체는 객체의 속성을 키-값 쌍으로 저장하는 __dict__라는 사전을 가질 수 있다. 객체에서 vars()를 호출하면 속성을 나타내는 사전을 반환한다. vars()는 속성 값을 동적으로 검사할 수 있으므로 사용자 정의 객체로 작업할 때 특히 유용하다.

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

person1 = Person("Alice", 30)

print(vars(person1))

# {'name': 'Alice', 'age': 30}

dir()

dir()

  • 사용된 클래스와 조상 클래스의 객체에 대한 dictionary를 반환한다.
  • argument없이 호출 될 때 현재 local scope내에 이름의 목록을 반환한다.
  • argument가 건내지는 경우 해당 객체에 유효한 속성의 목록을 반환한다.
  • 에러 없이 내장된 모든 타입들과 함께 사용될 수 있다.

dir() 함수는 주어진 객체의 네임스페이스에 정의된 정렬된 이름 목록(문자열)을 반환한다. 인수 없이 dir()을 ​​호출하면 현재 모듈의 네임스페이스에 있는 이름을 반환한다.

import math
print(dir(math))

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



Reference

vars() 과 dir()의 차이

py 카테고리 내 다른 글 보러가기

댓글 남기기