[python] 파이썬 객체를 어떻게 보나요?

파이썬 (Django 웹 개발 및 Panda3D 게임 개발 포함)을 사용하여 다양한 프로젝트에서 코딩을 시작하고 있습니다.

무슨 일이 일어나고 있는지 이해하도록 돕기 위해 기본적으로 Python 객체 내부에서 ‘보기’를 사용하여 메소드 및 속성과 같은 눈금을 확인하고 싶습니다.

파이썬 객체가 있다고 가정하면 그 내용을 인쇄하려면 무엇이 필요합니까? 가능합니까?



답변

파이썬에는 강력한 내부 검사 기능이 있습니다.

다음과 같은 내장 함수를 살펴보십시오 .

type()dir()물체의 종류와 각각의 속성의 설정, 검사에 특히 유용하다.


답변

object.__dict__


답변

먼저 소스를 읽으십시오.

둘째, dir()기능을 사용하십시오 .


답변

아직 아무도 언급하지 않은 도움에 놀랐습니다!

In [1]: def foo():
   ...:     "foo!"
   ...:

In [2]: help(foo)
Help on function foo in module __main__:

foo()
    foo!

도움말을 통해 docstring을 읽고 클래스에 어떤 속성이 있는지 알 수 있습니다. 이는 매우 유용합니다.


답변

이것이 무슨 일이 일어나고 있는지 알아보기 위해 IPython을 보는 것이 좋습니다 . 이것은 객체 문서, 속성 및 소스 코드를 얻기위한 다양한 지름길을 추가합니다. 예를 들어 “?” 함수를 사용하면 객체에 대한 도움말을 제공합니다 ( “help (obj)”에 대한 바로 가기). 두 개의? ( ” func??“)를 사용하면 소스 코드를 사용할 수있는 경우 표시됩니다.

탭 완성, 결과의 예쁜 인쇄, 결과 이력 등과 같은 추가 편의 기능도 있으므로 이러한 종류의 탐색 프로그래밍에 매우 편리합니다.

내부적으로 프로그래밍 방식으로 사용하기 위해 기본 내장은 dir() , vars(), getattr유용 등,하지만 체크 아웃하는 당신의 시간 가치가 검사 모듈을. 함수의 소스를 가져 오려면 ” inspect.getsource“를 사용하십시오 ( 예 : 함수 자체에 적용).

>>> print inspect.getsource(inspect.getsource)
def getsource(object):
    """Return the text of the source code for an object.

    The argument may be a module, class, method, function, traceback, frame,
    or code object.  The source code is returned as a single string.  An
    IOError is raised if the source code cannot be retrieved."""
    lines, lnum = getsourcelines(object)
    return string.join(lines, '')

inspect.getargspec 함수 매개 변수의 이름과 기본값을 제공하므로 랩핑 또는 조작 함수를 다루는 경우에도 유용합니다.


답변

이를 위해 GUI에 관심이 있다면 objbrowser를 살펴보십시오 . 아래의 객체 내부 검사를 위해 Python 표준 라이브러리의 inspect 모듈을 사용합니다.

objbrowser 스크린 샷


답변

쉘에서 dir ()을 사용하여 객체의 속성을 나열 할 수 있습니다.

>>> dir(object())
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

물론 inspect 모듈도 있습니다 : http://docs.python.org/library/inspect.html#module-inspect