Ruby에서 변수 (객체)를 p my_obj
까지 검사 할 수 있으므로 가능하면 자세히 "자세히"인쇄합니다. 로깅 및 디버깅에 유용합니다. 파이썬에서 나는 그것이 print my_obj
이라고 생각했지만, 단지 많이 인쇄하지는 않았지만, 전혀 쓸모가 없었던 <requests.sessions.Session object at 0x7febcb29b390>
.변수 (객체)를 인쇄하여 검사합니다.
어떻게하면됩니까?
Ruby에서 변수 (객체)를 p my_obj
까지 검사 할 수 있으므로 가능하면 자세히 "자세히"인쇄합니다. 로깅 및 디버깅에 유용합니다. 파이썬에서 나는 그것이 print my_obj
이라고 생각했지만, 단지 많이 인쇄하지는 않았지만, 전혀 쓸모가 없었던 <requests.sessions.Session object at 0x7febcb29b390>
.변수 (객체)를 인쇄하여 검사합니다.
어떻게하면됩니까?
이것은 객체를 "인쇄"하는 가장 보편적 인 방법입니다. 모든 객체가 매우 유용한 인쇄물을 가지는 것은 아닙니다. 실제로는 그렇지 않습니다.
다른 사람이 만든 객체로 작업하는 경우 해당 변수 및 기타 등을 보는 방법을 알아 보려면 설명서를 참조하십시오. 그것은 종종 당신에게 가장 좋은 출력을 줄 것입니다. 이 질문에 대한 다른 대답은 문서를 찾는 것보다 훨씬 빠르고 쉽게 할 수있는 객체를 검사하는보다 일반적인 방법을 제공합니다. 그들은 내가 할 수있는 한 더 얕은 검사를하지만 좋은 출발점입니다.
개체를 직접 만드는 경우 문자열을 반환하는 __str__()
이라는 메서드를 정의해야합니다. 그런 다음 print obj
이라고 할 때마다 해당 객체의 __str__()
함수가 호출되고 해당 문자열이 반환됩니다.
개체가 my_obj
인 경우 문서에 따라 print(my_obj.text)
으로 인쇄 할 수 있습니다.
Requests Session 객체가 좋은 캐치! –
이 대답은 잘못이 아니지만 * 검사에 대한 OP 질문에 전혀 대답하지 않습니다. –
루비도 같은 방식으로 작동합니다. 'p' 메소드는'to_s' 메소드를 호출합니다. 프로그래머가 (Object'에서) 상속받은 객체의 to_s를 덮어 쓰지 않으면 #
dir()
아마 당신이 원하는 당신을 줄 것이다 : 더 많은 정보는 내가 추측 :)
이것은 완전히 알려지지 않은 객체로 작업 할 때 유용합니다. 파이썬은 사전을 사용하여 이와 같은 코드를 가능하지는 않지만 읽을 수있게 만듭니다. – TheSoundDefense
하는 경우가 있다면 당신은, 비록 기대하고 있다는이있다
for key in dir(my_obj):
print('{}: {}'.format(key, getattr(my_obj, key))
개체 인쇄를 완벽하게 제어하려면 클래스에 __repr__
및 __str__
함수를 정의하십시오.
class Node(object):
""" A node object with an index"""
def __init__(self,index = 0):
self.index = index
def __repr__(self):
print "Node %s" % self.index
def __str__(self):
print "Node %s" % self.index
때때로 그렇게 만 __str__
을 덮어 아마 좋은 생각이다, 자세한 정보를보고 싶은 것입니다. 어쩌면
>>> import requests
>>> r = requests.Session()
>>> vars(r)
{'cookies': <<class 'requests.cookies.RequestsCookieJar'>[]>, 'stream': False, 'hooks': {'response': []}, 'auth': None, 'trust_env': True, ...}
를 얻을 수 pprint
와 결합 : Difference between __str__ and __repr__ in Python이
당신은 객체의 속성 사전을 얻을 수 vars
내장 방법을 사용할 수 있습니다 : 여기에 repr 및 STR의 차이에
좋은 세부 사항 다소 형식이 지정된 출력 :
>>> import pprint
>>> pprint.pprint(vars(r), indent=2)
{ 'adapters': OrderedDict([('https://', <requests.adapters.HTTPAdapter object at 0x103106690>), ('http://', <requests.adapters.HTTPAdapter object at 0x103106790>)]),
'auth': None,
'cert': None,
'cookies': <<class 'requests.cookies.RequestsCookieJar'>[]>,
...
inspect
모듈은 :
import inspect
print inspect.getmembers(my_obj)
이것은 __dict__
포함뿐만 아니라 매우 유용 할 수있는 객체의 모든 방법에 대한 세부 사항을 포함한다.
개체 또는 코드에 대한 자세한 정보를 공유 할 수 있습니까? –
이것을 사용해보십시오 :'from pprint import pprint as pp; pp (my_obj.__dict __)'(이것은 기본적으로'vars (my_obj)'가하는 것과 같습니다.) –