ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] __all__
    python 2025. 6. 5. 13:50

    __all__

    __all__은 Python 모듈에서 from module import * 구문으로 import할 때,

    어떤 이름(name)들을 외부에 공개할지를 정의하는 리스트입니다.

    즉, 모듈 외부에서 접근 가능하도록 허용할 식별자들을 명시적으로 지정하는 용도입니다.

     

    💡 중요한 특징

    • __all__은 from module import * 구문에서만 영향을 미칩니다.
    • import mymodule 또는 from mymodule import func2처럼 명시적으로 import하는 경우에는 __all__이 영향을 주지 않습니다.
    • __all__을 정의하지 않으면, from module import *는 언더스코어(_)로 시작하지 않는 이름들만 import합니다.

     

    ✅ 언제 쓰는가?

    • 모듈 또는 패키지를 라이브러리처럼 사용할 때, 공식적인 API만 외부에 노출하고 싶은 경우
    • 의도치 않게 내부 함수나 클래스가 외부에 노출되는 걸 방지하고 싶을 때

     

    실습

    1. __all__ 사용 경우

     

    # vietnam.py

    class VietnamPackage:
        def detail(self):
            print("[베트남 패키지 3박 5일] 다낭 효도여행 60만원")

     

    # __init__.py

    __all__ = ["vietnam"]

     

    # practice.py

    from travel import *
    trip_to = thailand.ThailandPackage()
    trip_to.detail()

     

    [베트남 패키지 3박 5일] 다낭 효도여행 60만원

     

    2. __all__ 을 사용하지 않았을 경우

     

    # thailand.py

    class ThailandPackage:
        def detail(self):
            print("[태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원")

     

    # practice.py

    from travel import *
    trip_to = thailand.ThailandPackage()
    trip_to.detail()

     

    Traceback (most recent call last):
      File "c:\Users\~\Desktop\PythonWorkspace\practice.py", line 6, in <module>
        trip_to = thailand.ThailandPackage()
                  ^^^^^^^^
    NameError: name 'thailand' is not defined

     

    에러가 뜬당,,

     

    # __init__.py

    __all__ = ["thailand"]

     

    추가 후 다시 practice.py 파일 실행

     

    [태국 패키지 3박 5일] 방콕, 파타야 여행 (야시장 투어) 50만원

    'python' 카테고리의 다른 글

    [python] 내장함수, 외장함수  (0) 2025.06.09
    [python] 모듈 직접 실행  (2) 2025.06.05
    [python] 패키지  (1) 2025.06.02
    [python] 모듈  (0) 2025.06.02
    [python] finally  (0) 2025.05.29
Designed by Tistory.