Python 강좌 : 제 45강 - 디스패치

Python Dispatch

Python 강좌 : 제 45강 - 디스패치
[ Python ] - 윤대희

디스패치(Dispatch)


디스패치(Dispatch)오버로딩(Overloading) 구현을 위한 라이브러리입니다.

오버로딩이란 같은 이름의 메서드(method)에 매개변수의 개수형식을 다르게 지정해 2개 이상의 메서드를 정의하는 것을 의미합니다.

Python에서는 오버로딩을 지원하지 않지만, multipledispatch 라이브러리를 통해 오버로딩을 구현할 수 있습니다.

multipledispatch 라이브러리는 인스턴스 메서드, 내장 추상 클래스(int, float, str, …)를 지원하며, 캐시를 통해 빠르게 반복 조회할 수 있습니다.


디스패치(Dispatch) 설치

pip install multipledispatch

multipledispatch 라이브러리는 Python 2.6+, Pythono 3.2+를 지원합니다.

종속된 라이브러리로는 six 라이브러리만을 활용해 구현되어 있습니다.

  • Tip : 아나콘다(Anaconda)를 통해 Python을 설치한 경우, 라이브러리가 설치되어 있을 수도 있습니다.



오버로딩(Overloading)


from multipledispatch import dispatch


@dispatch(int, int)
def add(x, y):
    return x + y


@dispatch(str, int)
def add(x, y):
    return f"{x} = {y}"


print(add(3, 6))
print(add("f(x)", 6))
결과
9
f(x) = 6

디스패치(Dispatch)를 사용하기 위해서 오버로딩하려는 메서드 위에 데코레이터(Decorator)를 적용합니다.

메서드는 동일한 이름으로 선언하며, @dispatch(*args)의 구조로 정의합니다.

적용하려는 오버로딩 메서드의 매개변수에 개수형식을 다르게 지정해 메서드의 기능을 나눕니다.

dispatch의 매개변수에 따라 서로 다른 메서드가 실행됩니다.

또한, 매개변수의 개수가 달라도 오버로딩을 구현할 수 있습니다.


  • Tip : @dispatch(str, int)@dispatch(int, str)는 서로 다른 메서드가 실행됩니다.
  • Tip : 동일한 매개변수를 갖는 메서드들이 선언되었다면 가장 아래쪽의 메서드로 적용됩니다.
  • Tip : 상위 클래스(Number 등)하위 클래스(int, float 등)로 구현한 메서드가 있다면, 하위 클래스의 메서드로 연결됩니다.




Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]



    ⤧  Previous post Python 강좌 : 제 44강 - 정규 표현식 ⤧  Next post Python 강좌 : 제 46강 - 프로세스 기반 병렬 처리
    Python Category