파이썬은 오버로딩을 지원하지 않는다? '+' 연산자는 어떻게 된 걸까
Overloaded Overloading

동료가 던진 질문에서 시작된 이 글은 파이썬에서 '오버로딩'이라는 용어가 두 가지 의미로 쓰인다는 점을 짚는다. 파이썬은 메서드 오버로딩(같은 이름의 메서드를 여러 개 정의하는 것)을 지원하지 않지만, 연산자 오버로딩은 지원한다. 그래서 '+'가 숫자에선 덧셈, 문자열에선 연결로 동작할 수 있다. 직접 클래스에 __add__ 메서드를 정의해 연산자 동작을 바꾸는 방법과, 필요하다면 메서드 오버로딩을 흉내 내는 디스패칭 기법, 그리고 @singledispatch 데코레이터 활용법까지 소개한다.
파이썬은 메서드 오버로딩을 지원하지 않지만 연산자 오버로딩은 지원한다. 그래서 '+'를 문자열과 숫자 모두에 사용할 수 있고, 직접 만든 클래스에서도 __add__ 메서드를 정의해 작동하게 할 수 있다.