traceback모듈 없이 함수가 자기 자신의 이름을 출력하게 하는 방법


발생하는 문제 및 실행환경

traceback모듈 없이 함수가 자기 자신의 이름을 출력하게 하려면 어떻게 해야될까요?

예를들면 모듈 foobar함수가 있을 때, foo.bar() 안에서 bar가 자기 이름인 "bar"나 "foo.bar"인걸 출력해 주고 싶은데

이때 어떻게 하면 될까요?

소스코드

#foo.py  
def bar():
    print "my name is", __myname__ # 이걸 어떻게 출력하죠?
  • 2016년 02월 16일에 작성됨

조회수 301


1 답변


좋아요
0
싫어요
채택취소하기

파이썬에서 자기 자신의 이름을 알아내는 함수는 없습니다. 예전에 제안으로 나온 적은 있는데 거절됐지요.

그래서 자기 이름을 출력하게 하려면

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]
  • 2016년 02월 16일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close