ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • __init__.py 를 이용한 모듈 관리
    개발 2024. 5. 8. 10:17

    파이썬 3.3 이전에는 __init__.py 는 디렉토리가 파이썬 패키지임을 명시할 때 필요했었다면 이제는 __init__.py 가 없어도 없어도 자동으로 디렉토리를 패키지로 인식한다.

     

    대신에 __init__.py 를 사용하면  패키지 내부에 있는 클래스 선언을 하나로 모아줄 수 있는 장점이 있다.

     

    이런 프로젝트 구조를 가지고 있고

    ├── main.py
    └── phone
        ├── galaxy.py
        └── iphone.py
    

     

    galaxy.py 와 iphone.py 에서 각각 클래스를 선언했다면

    # galaxy.py
    class Galaxy:
        def __init__(self) -> None:
            pass
    
    # iphone.py
    class Iphone:
        def __init__(self) -> None:
            pass
    

     

    main.py 에서 두개의 클래스를 임포트 할 때 아래처럼 파일명까지 명시해야한다.

    # main.py
    from phone.galaxy import Galaxy
    from phone.iphone import Iphone
    

     

    물론 이렇게도 사용하는데 문제는 없다. 그러나 논리적으로 패키지를 구분했던 목적에서 봤을때 phone 디렉토리에서 Galaxy 와 Iphone 을 임포트하는게 자연스럽다.

     

    __init__.py 를 활용하면 파일명까지 내려갈 필요 없이 phone 패키지 까지만 명시하고 임포트 할 수 있다.

     

    먼저 __init.py__ 를 phone 디렉토리에 생성하고 아래 처럼 미리 임포트를 시킨다

    # __init.py__
    from .galaxy import Galaxy
    from .iphone import Iphone
    

     

    그러면 main.py 에선 파일명까지 임포트하지 않고도 phone 패키지 내부 클래스를 임포트할 수 있다.

    # main.py
    from phone import Galaxy
    from phone import Iphone
    

    댓글

Designed by Tistory.