__init__.py
에 __all__
을 정의하면 from mypackage import *
했을 때 어떤 모듈이나 객체가 외부로 노출될지 제어할 수 있습니다.📦 예시 구조
mypackage/
│
├── __init__.py
├── module_a.py
└── module_b.py
📄 module_a.py
def func_a():
print("Function A")
def hidden_a():
print("Hidden A")
📄 module_b.py
def func_b():
print("Function B")
📄 __init__.py
from .module_a import func_a
from .module_b import func_b
__all__ = ['func_a'] # func_b는 import * 시 노출되지 않음
✅ 사용 예시
from mypackage import *
func_a() # ✅ 사용 가능
func_b() # ❌ NameError: func_b is not defined
🔎 요약
__all__
은import *
에서 **외부에 노출할 심볼(변수, 함수, 클래스, 모듈 등)**을 문자열 리스트로 지정
- 실제 모듈 안에 정의된 모든 항목이 아니라,
__all__
에 적힌 항목만 가져옴
Share article