객체의 변수&속성을 출력하는 방법


파이썬에는 PHPprint_r같은 함수가 있나요? 디버그 할 때 object의 상태를 봐야해서요. 비슷한 기능 있을까요?

  • 2016년 01월 13일에 작성됨

조회수 463


1 답변


좋아요
0
싫어요
채택취소하기

dir(), vars()를 써보세요

dir()

  • 인자가 주어지지 않으면 현재 local scope에 있는 name을 저장한 listreturn해줍니다.
  • 인자가 주어진 경우엔 그 object에 있는 attributestring형태로 저장한 listreturn해줍니다.
  • objectmodule object인 경우, 리스트는 모듈의 어트리뷰트 이름을 저장하고 있습니다.
  • objecttype이나 class object인 경우, 리스트는 해당 클래스와 base클래스들의 어트리뷰트 이름을 저장하고 있습니다.

  • object__dir__()를 지원하지 않으면, 대신 __dict__ 어트리뷰트 등에서 정보를 모아옵니다.

  • object안에서 __getattr__()을 따로 정의한 경우에는 dir()returnlist는 완전하지 않을 수도 있습니다

  • list의 원소는 알파벳 순서로 정렬되어있습니다

vars()module, class, instance, 그 외 __dict__ 어트리뷰트가 있는 object__dict__ 어트리뷰트를 return해줍니다.

class myClass(object):
    def __init__(self):
        pass
    def myFunc1(self):
        pass


from pprint import pprint
l = dir(myClass)

print "---print l---"
print l

print "\n\n---pprint(l)---"
pprint(l)

print "\n\n---pprint(l, indent=2)---"
pprint(l, indent=2)

결과)

---print l---
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'myFunc1']


---pprint(l)---
['__class__',
 '__delattr__',
 '__dict__',
 '__doc__',
 '__format__',
 '__getattribute__',
 '__hash__',
 '__init__',
 '__module__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
'__subclasshook__',
 '__weakref__',
 'myFunc1']


---pprint(l, indent=2)---
[ '__class__',
  '__delattr__',
  '__dict__',
  '__doc__',
  '__format__',
  '__getattribute__',
  '__hash__',
  '__init__',
  '__module__',
  '__new__',
  '__reduce__',
  '__reduce_ex__',
  '__repr__',
  '__setattr__',
  '__sizeof__',
  '__str__',
  '__subclasshook__',
  '__weakref__',
  'myFunc1']
  • 2016년 01월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close