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

조회수 3420회

발생하는 문제 및 실행환경

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]
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)