(단지 프레임의 주민) : 위의 경우파이썬 추적에서 로컬 속성을 인쇄하는 방법은 무엇입니까? 내가 마지막 프레임의 출력에 지역 주민을 traceback.print_exception을 수정
Traceback (most recent call last):
File "/home/aconrad/work/smlib.traceback/tests.py", line 287, in test_display_variable_that_is_not_local
f.boom()
File "/home/aconrad/work/smlib.traceback/tests.py", line 284, in boom
return ','.join(self.foo)
TypeError
local variables:
- self: <tests.Foo object at 0x3233350>
는 지역 주민은 내가 자기의 가치를 알고하지 않는만큼 유용하지 않다 .foo는 join() 함수를 깨뜨렸다. 나는 다음으로도 사용되는 속성과 값을 인쇄하는 내 사용자 지정 추적을 수정하고 싶습니다 : 나는 속성을 찾아 프레임의 지역 주민에 그들을 찾기 위해 AST 모듈을 사용하여 소스를 분석하기 시작
attributes:
- self.foo: 1
. 위의 하나의 유스 케이스에서 작동하지만 소스 라인을 지원하기에는 너무 약합니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까? 여기
내가 내 테스트 케이스에 사용되는 코드입니다 :class Foo(object):
foo = 1
def boom(self):
return ','.join(self.foo)
f = Foo()
f.boom()
응답 해 주셔서 감사합니다. Maxime! 비록 내가 오류를 일으킬 수있는 추적 소스에서 값을 표시하고 싶지만. 'self'는 문장의 일부가 아니기 때문에 자기를 바라보기 만하는 것이 아니라 '', join (something.foo) 문을 깨뜨린 것입니다. –
마지막 줄을 구문 분석하여 사용 된 모든 식별자는'getattr()'와 함께 사용하면 어려울 것입니다. –