inblog logo
|
devleekangho
    파이썬

    [Python] __init__.py에 __all__을 정의해 외부에 노출되는 객체나 모듈을 제어하는 방법

    KangHo Lee's avatar
    KangHo Lee
    May 30, 2025
    [Python] __init__.py에 __all__을 정의해 외부에 노출되는 객체나 모듈을 제어하는 방법
    __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

    devleekangho

    RSS·Powered by Inblog