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

발생하는 문제 및 실행환경

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

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

이때 어떻게 하면 될까요?

소스코드

#foo.py  
def bar():
    print "my name is", __myname__ # 이걸 어떻게 출력하죠?

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]
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.