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를 사용하면 타입·개수 기반 오버로딩이 가능
- 코드의 가독성과 직관성을 높이는 데 도움이 될 수 있음
'파이썬 > 기초 프로그래밍' 카테고리의 다른 글
| Python type()을 이용한 동적 클래스 생성 가이드 (0) | 2025.09.15 |
|---|---|
| 파이썬 메타클래스(Metaclass) 완전 정리 (0) | 2025.09.15 |
| 파이썬 언더스코어(_)의 의미와 활용 (0) | 2025.09.14 |
| 메모리를 아끼는 파이썬 데이터 처리 비법 — map, filter, reduce (0) | 2025.09.13 |
| 파이썬에서 내부 자원과 외부 리소스의 차이 (0) | 2025.09.13 |