-
__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
'개발' 카테고리의 다른 글
[파이썬] 파이썬은 모든것이 객체다 (0) 2024.05.09 [python] __all__ 을 이용해 전체 임포트 막기 (0) 2024.05.08 파이썬 - 리스트 컴프리헨션 (0) 2024.05.03 Session, Cookie, CSRF (0) 2023.06.03 python - async def, asyncio (0) 2023.06.03