파이썬 (Django 웹 개발 및 Panda3D 게임 개발 포함)을 사용하여 다양한 프로젝트에서 코딩을 시작하고 있습니다.
무슨 일이 일어나고 있는지 이해하도록 돕기 위해 기본적으로 Python 객체 내부에서 ‘보기’를 사용하여 메소드 및 속성과 같은 눈금을 확인하고 싶습니다.
파이썬 객체가 있다고 가정하면 그 내용을 인쇄하려면 무엇이 필요합니까? 가능합니까?
답변
답변
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 모듈을 사용합니다.
답변
쉘에서 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