python에서 __all__의 역할은 뭔가요?


파이썬 공부하고 있는데 __init__.py 파일 안에 __all__ <- 이게 자꾸 보며요 이건 뭐하는데 쓰나요?

  • 2016년 01월 12일에 작성됨

조회수 203


1 답변


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

__all__은 string을 element로 가지는 list입니다. 이 string은 from <module> import *에서 export 될 symbol을 의미하지요.

예를 들어, 다음의 코드 foo.py는 symbol bar, baz를 export합니다.

#foo.py
__all__ = ['bar', 'baz'] # import *에서 bar, baz를 export할 것을 명시

waz = 5
bar = 10
def baz(): return 'baz'

이제 temp.pyfoo 모듈을 import하면

#temp.py
from foo import * #bar, baz가 import 됨

print bar #성공
print baz #성공
print waz # "waz"는 foo.py의 __all__에서 명시하지 않았기 때문에 exception이 발생

단, __all__을 명시하지 않고 import *한 경우는 모든 symbol(언더바_로 시작하는 symbol은 제외)이 import되므로 foo.py__all__부분을 지운다면 print waz는 문제없이 실행됩니다.

이런 이유로 __init__파일 안에서 __all__을 설정합니다.

  • 2016년 01월 12일에 작성됨

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

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