traceback모듈 없이 함수가 자기 자신의 이름을 출력하게 하는 방법
조회수 3420회
발생하는 문제 및 실행환경
traceback모듈 없이 함수가 자기 자신의 이름을 출력하게 하려면 어떻게 해야될까요?
예를들면 모듈 foo
에 bar
함수가 있을 때, foo.bar()
안에서 bar
가 자기 이름인 "bar"나 "foo.bar"인걸 출력해 주고 싶은데
이때 어떻게 하면 될까요?
소스코드
#foo.py
def bar():
print "my name is", __myname__ # 이걸 어떻게 출력하죠?
1 답변
-
파이썬에서 자기 자신의 이름을 알아내는 함수는 없습니다. 예전에 제안으로 나온 적은 있는데 거절됐지요.
그래서 자기 이름을 출력하게 하려면
1. 직접 써주기
def bar(): print "my name is bar" #혹은 print "my name is foo.bar"
2.
__name__
어트리뷰트 쓰기def bar(): print "my name is", bar.__name__
3. inspect모듈에서 스택으로 알아내기
import inspect def foo(): print inspect.stack()[0][3]
댓글 입력