Python 강좌 : 제 45강 - 디스패치
디스패치(Dispatch)
디스패치(Dispatch)
는 오버로딩(Overloading)
구현을 위한 라이브러리입니다.
오버로딩이란 같은 이름의 메서드(method)에 매개변수의 개수
나 형식
을 다르게 지정해 2개 이상의 메서드를 정의하는 것을 의미합니다.
Python에서는 오버로딩을 지원하지 않지만, multipledispatch
라이브러리를 통해 오버로딩을 구현할 수 있습니다.
multipledispatch
라이브러리는 인스턴스 메서드, 내장 추상 클래스(int, float, str, …)를 지원하며, 캐시를 통해 빠르게 반복 조회할 수 있습니다.
디스패치(Dispatch) 설치
multipledispatch
라이브러리는 Python 2.6+, Pythono 3.2+를 지원합니다.
종속된 라이브러리로는 six
라이브러리만을 활용해 구현되어 있습니다.
- Tip :
아나콘다(Anaconda)
를 통해 Python을 설치한 경우, 라이브러리가 설치되어 있을 수도 있습니다.
오버로딩(Overloading)
- 결과
- 9
f(x) = 6
디스패치(Dispatch)
를 사용하기 위해서 오버로딩하려는 메서드 위에 데코레이터(Decorator)
를 적용합니다.
메서드는 동일한 이름으로 선언하며, @dispatch(*args)
의 구조로 정의합니다.
적용하려는 오버로딩 메서드의 매개변수에 개수
나 형식
을 다르게 지정해 메서드의 기능을 나눕니다.
dispatch
의 매개변수에 따라 서로 다른 메서드가 실행됩니다.
또한, 매개변수의 개수가 달라도 오버로딩을 구현할 수 있습니다.
-
Tip :
@dispatch(str, int)
와@dispatch(int, str)
는 서로 다른 메서드가 실행됩니다. -
Tip : 동일한 매개변수를 갖는 메서드들이 선언되었다면 가장 아래쪽의 메서드로 적용됩니다.
-
Tip :
상위 클래스(Number 등)
와하위 클래스(int, float 등)
로 구현한 메서드가 있다면, 하위 클래스의 메서드로 연결됩니다.
댓글 남기기