파이썬/기초 프로그래밍

파이썬에서의 메소드 오버로딩 (multipledispatch 활용)

Data Jun 2025. 9. 14. 13:47

1. 오버로딩이란?

프로그래밍에서 **오버로딩(Overloading)**은 동일한 이름의 함수나 메서드를 여러 개 정의하되, 매개변수의 개수나 타입에 따라 다른 동작을 하도록 만드는 기능입니다.
C++이나 Java 같은 정적 타입 언어에서는 기본적으로 지원하지만, 파이썬은 동적 타이핑 언어라서 직접적인 오버로딩은 지원하지 않습니다.

 

2. multipledispatch 패키지를 이용한 오버로딩

파이썬에서는 multipledispatch라는 외부 라이브러리를 활용하면, 마치 정적 언어처럼 파라미터 개수와 타입을 기준으로 메서드를 구분할 수 있습니다.

 

예제 코드

from multipledispatch import dispatch

class SampleC:
    @dispatch(int, int)
    def product(self, x, y):
        return x * y

    @dispatch(int, int, int)
    def product(self, x, y, z):
        return x * y * z

    @dispatch(float, float, float)
    def product(self, x, y, z):
        return x * y * z

c = SampleC()

print('정수 2개:', c.product(5, 6))         # 30
print('정수 3개:', c.product(5, 6, 7))      # 210
print('실수 3개:', c.product(5.1, 6.2, 6.2))# 196.164

실행 결과

정수 2개: 30
정수 3개: 210
실수 3개: 196.164

 

 

 

정리하면

  • 파이썬은 기본적으로 메서드 오버로딩을 지원하지 않음
  • 하지만 multipledispatch를 사용하면 타입·개수 기반 오버로딩이 가능
  • 코드의 가독성과 직관성을 높이는 데 도움이 될 수 있음