그래서 뭐, 그런 식으로 뭔가를 찾고 PHP& I& # 39 m, s print_r # 39 이것은 함수. 이거 정말 내가 할 수 있는 객체의 상태를 보고 내 스크립트에만 디버그로 what& # 39 에 의해 질문이예요
'함께': ' ()' 은 운영까지도 pprint ()
from pprint import pprint
pprint(vars(your_object))
당신은 정말 함께 섞어 두 개의 서로 다른 전지전능하심이라
['디렉터 ()'] 사용하여 (https://docs.python.org/3/library/functions.html # dir), [' () 은'] (https://docs.python.org/3/library/functions.html #) 은 또는 ['조사'] (https://docs.python.org/3/library/inspect.html) 모듈에서는 afaq 관심이 모아지고 있다 (예를 들어, '내가 사용하는' builtins 너희는너희가 대신 모든 객체를 사용할 수 있습니다).
>>> l = dir(__builtins__)
>>> d = __builtins__.__dict__
그러나 그 사전 인쇄하십시오 돌림무늬 좋아해요.
>>> print l
['ArithmeticError', 'AssertionError', 'AttributeError',...
또는
>>> from pprint import pprint
>>> pprint(l)
['ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'DeprecationWarning',
...
>>> pprint(d, indent=2)
{ 'ArithmeticError': <type 'exceptions.ArithmeticError'>,
'AssertionError': <type 'exceptions.AssertionError'>,
'AttributeError': <type 'exceptions.AttributeError'>,
...
'_': [ 'ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'DeprecationWarning',
...
예쁜 인쇄면이 대화형 디버거 명령으로 에서도 사용할 수 있습니다.
(Pdb) pp vars()
{'__builtins__': {'ArithmeticError': <type 'exceptions.ArithmeticError'>,
'AssertionError': <type 'exceptions.AssertionError'>,
'AttributeError': <type 'exceptions.AttributeError'>,
'BaseException': <type 'exceptions.BaseException'>,
'BufferError': <type 'exceptions.BufferError'>,
...
'zip': <built-in function zip>},
'__file__': 'pass.py',
'__name__': '__main__'}
def dump(obj):
for attr in dir(obj):
print("obj.%s = %r" % (attr, getattr(obj, attr)))
그 밖에 여러 가지 3rd party 같은 기능을 추가, 예외 처리, 국가 / 특별광고에 인쇄면이 레커싱 네스트된 객체에는 # 39 에 따르면, 그들의 authors& 등의 문자 환경 설정. 그러나 기본적으로 이 모든 항목으로 요약됩니다.
디렉터 (), " " 사용할 수 있습니다. 함수은 이 작업을 수행할 수 있습니다.
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdo
t__', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder
, 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'exc_clear', 'exc_info'
'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', 'getdefault
ncoding', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'getwindowsversion', 'he
version', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_
ache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setprofile', 'setrecursionlimit
, 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoption
', 'winver']
>>>
또 다른 유용한 기능은 움말.
>>> help(sys)
Help on built-in module sys:
NAME
sys
FILE
(built-in)
MODULE DOCS
http://www.python.org/doc/current/lib/module-sys.html
DESCRIPTION
This module provides access to some objects used or maintained by the
interpreter and to functions that interact strongly with the interpreter.
Dynamic objects:
argv -- command line arguments; argv[0] is the script pathname if known
현재 상태를 객체에는 인쇄하려면 수 있습니다.
>>> obj # in an interpreter
또는
print repr(obj) # in a script
또는
print obj
'방법' 또는 '정의' str 단축시킵니다 클래스뿐만 repr. [파이썬 문서용으로] 에서 1:
>. 'repr (self)' 에서 '라는 레프라 내장현 ()' 에서 문자열 함수 >. 변환에는 (역동기화 인용) 를 >. 계산을 " official"; 문자열 >. 표현한 객체. 만약 전혀 >. 이 같은 가능성을 고려해야 합니다 >. 파이썬 표현식에서는 사용할 수 있는 >. 함께 사용하여 객체를 재생성합니다. >. (적절한 때 동일한 값을 >. 환경). 이 경우 수 없습니다. >. 형태의 < 이섬 유용한 문자열으로 "; >. description.> "; 귀의하노라 합니다. >. 반환 값은 문자열이어야 합니다 >. 객체에는. 만약 a 클래스 eventtest repr () >. 다음 () '가 아닌' () ',' repr str >. 또한, 한 때 사용되는 " informal". 문자열 >. 그 표현 인스턴스들도 >. 클래스가 필요합니다. 이는 일반적으로 >. 도왔으매 디버깅에 사용되는 것이 중요합니다. >. 그 표현이 >. 풍부한 정보 및 명백한.
>. 'str (self)' 에서 '라는 str ()' 에서 내장 기능 및 인쇄 >. 기술서임을 계산하기 informal" "; >. 구체화하십시오 표현한 객체. >. Repr () '이' 이 다릅니다. >. 유효한 파이썬 필요는 없습니다 >. 표현식에서는: 보다 편리한 또는 >. 간결한 표현을 사용할 수 있습니다. >. 대신. 반환 값을 지정해야 합니다. >. string 객체에.
체크아웃하기 형성할 수도 있다.
https://stackoverflow.com/questions/2540567/is-there-a-python-equivalent-to-perls-datadumper
내 권장안을 로만스였나 -
https://gist.github.com/1071857
참고로 가지고 있는 데이터를 다시 펄 펄 모듈 호출됨 데이터 덤퍼 구체화합니다 객체에는 소스 코드 (참고: 사용하지 않기 때문에 변환하기에 코드를 다시 소스로, 거의 항상 don& 있습니다 싶지 않다, 객체에는 메서드로부터 # 39 의 함수 출력). 그러나 일반 목적의 디버깅하지 대한 지속성을 위해 사용될 수 있습니다.
특히 여러 가지 못하는 것을 보고 그냥 정지점으로 표준 파이썬 pprint 이룰 때 사용하면 내림차순을 인스턴스입니다 내부 hex 포인터입니다 객체와 객체 (에르 포인터입니다 사용할 수 있는 것은, 전체적으로 많은 운행에서어떠한). 그래서 간단히 말해서, python 은 객체 지향 패러다임에 관한 모든 필요한 도구가 있지만, 이 거대한 상자의 나가버렷 협력을 위해 설계됩니다 이외의 다른 객체.
펄 데이터 덤퍼 제어할 수 있습니다, 또한 얼마나 깊은 갈래 사용순환 탐지합니다 링크됨 구조 (that& # 39 의 정말 중요한). 이 과정은 쉽게 얻을 수 있기 때문에 근본적으로 perl 로 객체에는 이외에 별다른 매직 축복을 () 는 전 세계 어디서나 잘 정의된 프로세스).
대부분의 경우, '정보' 가 '또는' 디렉터 () 를 사용하여 dict you& 있습니다 # 39, re 하늘과 땅 차이다. 자세한 내용은 필요로 하는 문제가 발생할 경우, 표준 라이브러리 dm_ownerdm_owner 직접 모듈에서는 수 있는 양을 좀 인상적이군 상세함을. 실제 누게스테스 일부 정보를 다음과 같습니다.
한 메타 프로그래밍 예 덤프하지 객체에는 함께 매직:
< pre>; $ cat dump.py < /pre>;
import sys
if len(sys.argv) > 2:
module, metaklass = sys.argv[1:3]
m = __import__(module, globals(), locals(), [metaklass])
__metaclass__ = getattr(m, metaklass)
class Data:
def __init__(self):
self.num = 38
self.lst = ['a','b','c']
self.str = 'spam'
dumps = lambda self: repr(self)
__str__ = lambda self: self.dumps()
data = Data()
print data
인수가 없는.
< pre>; $ 파이썬 dump.py < /pre>; < main.Data 인스턴스입니다 dell. 0x00A052D8>;
2 와 [과 유틸리티인]: < pre>; $ 뇨시.매직 메타스믈피클러 파이썬 dump.py < /pre>; ,, xml 버전을 = " 1.0" > <?? doctype 프로비치 < PyObjects.dtd" ", 시스템, >;! = " main" 프로비치 모듈에서는 <;; class = " Data"; id = " 11038416" >;; attr name = " lst" <;; type = " list"; id = " 11196136"; >. 항목 유형 = " string" <;; 값 = " a"; />. 항목 유형 = " string" <;; 값 = " b"; />. 항목 유형 = " string" <;; 값 = " c"; />. < /attr>; attr name = " num" <;; type = " numeric"; 값 = " 38"; />. attr name = " str" <;; type = " string"; 값 = " spam"; />. < /PyObject>;
그래도 조금 오래된 것은 작업 중.
내가 (your_object) '' 도움말에서는 사용하는 것이 좋습니다.
'도움말에서는 (dir)'
>. 이름 없는 경우, 현재 내시경이요 반품하십시오 불렀으매 인수 >. (일부) 등 다른 이름들을 사전순으로 돌아올 수 있는 속성 >. 주어진 객체에는 속성 및 에서 접속할 수 있습니다. >. 만약 객체가 물품요 메서드입니다 release. dir, 사용됩니다. 그렇지 않으면 >. 기본값입니다 되돌려줍니다 디렉터 () 이 사용되고 있다. >. kingdome. seattle. 모듈에서는 객체에는: 이 module& # 39 의 속성. >. 클래스에 대한 객체에는: 속성 및 재귀적으로 특성이 있다. >. 기지 있다. >. 다른 객체. # 39 의 속성 및 class& 속성이 있다. >. # 39 의 기반 클래스, 속성 재귀적으로 class& 있다.
'도움말에서는 () 은'
>. 인수가 없는 해당하는 지역 (). >. 인수를 통해 해당하는 object.dict.
이 모든 내용을 재귀적으로 를출력합니다 객체에는 json 으로 또는 yaml 밀어맞춤된 형식:
import jsonpickle # pip install jsonpickle
import json
import yaml # pip install pyyaml
serialized = jsonpickle.encode(obj, max_depth=2) # max_depth is optional
print json.dumps(json.loads(serialized), indent=4)
print yaml.dump(yaml.load(serialized), indent=4)
종료기 프레티
from ppretty import ppretty
class A(object):
s = 5
def __init__(self):
self._p = 8
@property
def foo(self):
return range(10)
print ppretty(A(), show_protected=True, show_static=True, show_properties=True)
출력:
__main__.A(_p = 8, foo = [0, 1, ..., 8, 9], s = 5)
from pprint import pprint
pprint(my_var)
여기서 my_var 는 변수를 관심을 모으고 있다. 난 '때 사용되는 pprint (var (my_var)' t help 멘붕이야 및 기타 여기에 대답을 didn& # 39, 또는 메서드로부터 불필요하게 긴 보였다. 그나저나 내 특정 경우 코드 I was a dictionary of 사전 조사하고 있었다.
그냥 끝날 수 있는 가치가 있는 것 아니냐는 지적도 일부 사용자 정의 클래스 ',' http://support. 0x7f739267f400> 섬롭ject.렉amp리클레스 객체에는 < 도움이되지 않는, 그런 출력입니다. 이 경우, 할 수 있습니다 'a' str 구현하십시오 방법, 또는 다른 몇몇 시도하시겠습니까 솔루션뀉뀉뀉뀉. # 39; d 아직도 찾을 수 있는 단순한 사안이 작동됨 i& 없이 모든 경우에 제 3 자 라이브러리보다는.
Myobject" 덤프하기 위한 ";:
from bson import json_util
import json
print(json.dumps(myObject, default=json_util.default, sort_keys=True, indent=4, separators=(',', ': ')))
전화했는데 var () 및 디렉터리 (); 내가 찾던 뭐하러요 모두 실패했다. # 39 didn& var (), t, t %s/dbase/exttable. _dict didn& 때문에 작동합니까 객체에는 # 39 (렉스티론스트리피에로: 인수 () 은 있어야 _dict_ 속성). # 39 wasn& 디렉터 (), t 내가 찾고 있었습니다. # 39 의 그냥 열거합니다 it& 필드 이름 값을 t give, doesn& # 39, 또는 객체 구조.
내 생각엔 제슨윈덤프스 () 를 사용할 수 없는 객체에는 대부분 기본 = json_util.default 하지만 난 그 당시 datetime 필드에 객체에는 표준 json 시리얼 못했습니다. Https://stackoverflow.com/questions/11875770/how-to-overcome-datetime-datetime-not-json-serializable-in-python 참조
그냥 종료기 [비프린트] (https://github.com/panyanyany/beeprint).
하지만 아름다운 출력입니다 인쇄면이 아니라 개체 변수가 아니라 함께 도움이 된다 (예:
class(NormalClassNewStyle):
dicts: {
},
lists: [],
static_props: 1,
tupl: (1, 2)