파이썬 임포트를 간소화하기: 파일이 아닌 클래스로 임포트하는 방법

파이썬으로 작업할 때, 특히 더 큰 프로젝트에서 임포트를 효과적으로 관리하는 것이 중요합니다. 패키지에서 해당 파일이 아닌 클래스를 직접 접근하고 싶을 수 있습니다. 이 방법은 코드가 더 깔끔하고 읽기 쉽게 만들어 줍니다. 이 블로그 포스트에서는 간단한 구조로 파이썬 프로젝트에서 이를 수행하는 방법을 다루겠습니다.

문제

다음과 같은 파일 구조를 고려해 보십시오:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py

이 경우, project.pyProject 클래스를 정의하면, app.py에서 전통적으로 아래와 같이 임포트할 것입니다:

from app.controllers.project import Project

하지만, 임포트 문장을 더 짧고 깔끔하게 하고 싶지 않나요? 다음과 같이 임포트하고 싶을 수 있습니다:

from app.controllers import Project

이렇게 하면 임포트 문장이 간단해질 뿐만 아니라 코드베이스가 더 정리된 모습으로 유지됩니다. 질문이 생깁니다: 이 설정을 어떻게 할 수 있을까요?

해결책

임포트 프로세스를 간소화하고 클래스를 패키지에서 직접 임포트할 수 있도록 하려면, controllers 디렉토리에 있는 __init__.py 파일을 약간 수정해야 합니다.

단계별 가이드

  1. __init__.py 파일 열기: 이 파일은 일반적으로 파이썬 패키지를 초기화하는 데 사용되며 패키지를 가져올 때 무엇이 임포트될지를 제어할 수 있습니다.

  2. 임포트 문 추가하기: Project 클래스를 controllers에서 직접 임포트할 수 있도록 __init__.py에 다음과 같은 줄을 추가합니다:

    from project import Project
    

    이렇게 하면 controllers 패키지를 임포트할 때 project.py에서 Project 클래스를 자동으로 임포트하게 됩니다.

  3. 절대 임포트 조정하기: 파이썬 2.7이후부터는 절대 임포트가 기본 모드로 설정됩니다. 상위 모듈과 이름이 중복될 수 있는 충돌을 피하기 위해, 점을 포함하여 상대 임포트를 나타내는 것이 유익합니다. 따라서 __init__.py에서 임포트를 다음과 같이 수정합니다:

    from .project import Project
    

    이는 Project 클래스가 현재 패키지(controllers)에서 임포트된다는 것을 나타냅니다.

주요 사항

  • __init__.py를 수정함으로써 임포트를 상당히 간소화할 수 있습니다.
  • 모듈 이름 앞에 점(.)을 사용하면 올바른 모듈을 참조하고 있음을 보장할 수 있으며, 이는 이름 충돌 가능성이 있는 큰 애플리케이션에서 특히 유용합니다.
  • 이 관행은 코드의 가독성을 향상시킬 뿐만 아니라 프로젝트가 확장됨에 따라 명확한 구조를 유지하는 데 도움이 됩니다.

결론

위에 설명한 간단한 단계를 따르면, 파이썬 코딩 관행을 향상시켜 임포트를 더 간단하게 만들 수 있습니다. 이 기법은 시간 절약뿐만 아니라 깔끔하고 유지 관리 가능한 코드 작성에 기여합니다. 잘 구조화된 애플리케이션은 임포트를 효과적으로 관리하는 것에서 시작된다는 점을 기억하세요!

이 접근 방식을 자신의 프로젝트에서 시험해 보고 그 차이를 확인해 보세요!