Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python) 클래스를 여러 파일로 분할하는 방법 총정리

파이썬으로 개발을 하다 보면 하나의 파일에 모든 코드를 작성하기 어려운 상황이 자주 발생합니다. 프로젝트 규모가 커지면 클래스와 함수가 수백 줄, 수천 줄에 이르면서 코드의 가독성과 유지보수성이 크게 떨어지기 때문입니다. 이럴 때 파이썬 프로그램이나 클래스를 여러 파일로 분할하면 관리가 훨씬 수월해집니다.

클래스를 여러 파일로 나누는 기본 원칙

파이썬 프로그램이나 클래스를 여러 파일로 분할하려면, 먼저 기존 코드를 리팩토링하여 두 개 이상의 클래스나 모듈로 재구성해야 합니다. 이 과정에서 가장 중요한 것은 원본 코드의 기능이 그대로 유지되도록 보장하는 것입니다.

분할 작업은 일반적으로 다음과 같은 순서로 진행합니다.

1. 코드 역할별로 그룹화하기

하나의 거대한 클래스 안에 서로 다른 책임이 섞여 있다면, 이를 역할별로 나누어 별도의 클래스로 분리합니다. 예를 들어 데이터 처리 로직과 화면 출력 로직이 한 클래스에 있다면 각각 독립된 파일로 옮기는 것이 좋습니다.

2. 각 클래스를 별도의 .py 파일(모듈)로 저장하기

파이썬에서는 파일 하나가 곧 하나의 모듈입니다. 클래스마다 별도의 .py 파일을 만들면 자연스럽게 모듈 단위로 코드가 분리됩니다.

# calculator.py
class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b
# printer.py
class Printer:
    def show(self, result):
        print(f"결과: {result}")

3. import 문으로 필요한 모듈 불러오기

분리된 클래스를 사용하려면 import 문이나 from ... import ... 구문을 통해 해당 모듈을 가져옵니다.

# main.py
from calculator import Calculator
from printer import Printer

calc = Calculator()
printer = Printer()

result = calc.add(10, 5)
printer.show(result)  # 결과: 15

패키지(Package) 구조로 체계적으로 관리하기

분할할 파일이 많아진다면 폴더 단위의 패키지 구조를 활용하는 것이 좋습니다. 디렉터리에 __init__.py 파일을 두면 해당 폴더가 하나의 패키지로 인식됩니다.

my_project/
├── main.py
└── utils/
    ├── __init__.py
    ├── calculator.py
    └── printer.py
# main.py
from utils.calculator import Calculator
from utils.printer import Printer

분할 시 주의사항

  • 순환 참조(Circular Import) 방지: 두 모듈이 서로를 import하면 오류가 발생할 수 있으므로 의존 관계를 한 방향으로 설계해야 합니다.
  • 기능 동등성 검증: 분할 후 반드시 기존과 동일하게 동작하는지 테스트를 통해 확인해야 합니다.
  • 명확한 네이밍: 파일명과 클래스명은 그 역할을 직관적으로 알 수 있도록 지정하는 것이 좋습니다.

마무리

이처럼 파이썬 클래스를 여러 파일로 분할하는 방법은 위에서 설명한 것처럼 일반적인 원칙에 따라 진행됩니다. 다만 실제 프로젝트에서는 문제 상황마다 요구 사항이 다르기 때문에, 마주치는 특정 시나리오에 맞춰 구체적인 해결책을 적용하는 것이 중요합니다. 코드를 모듈 단위로 잘게 나누어두면 협업, 테스트, 재사용 측면에서 모두 큰 이점을 얻을 수 있습니다.