PHpullh
학습 라이브러리/Python/단일 디스패치

PYTHON · 함수

단일 디스패치

functools.singledispatch로 인자 타입에 따라 다른 구현을 실행하는 함수 오버로딩을 구현합니다.

함수고급singledispatch오버로딩dispatchfunctools

핵심 설명

functools.singledispatch로 인자 타입에 따라 다른 구현을 실행하는 함수 오버로딩을 구현합니다.

Python code

from functools import singledispatch

@singledispatch
def process(data):
    raise NotImplementedError(f"{type(data)}은 지원하지 않음")

@process.register(str)
def _(data):
    return f"문자열 처리: {data.upper()}"

@process.register(int)
@process.register(float)
def _(data):
    return f"숫자 처리: {data * 2}"

@process.register(list)
def _(data):
    return f"리스트 처리: {len(data)}개 항목"

@process.register(dict)
def _(data):
    return f"딕셔너리 처리: 키={list(data.keys())}"

print(process("hello"))      # 문자열 처리: HELLO
print(process(42))           # 숫자 처리: 84
print(process([1, 2, 3]))    # 리스트 처리: 3개 항목
print(process({"a": 1}))     # 딕셔너리 처리: 키=['a']

# 등록된 구현 확인
print(process.registry.keys())

학습 팁

클래스 메서드에는 singledispatchmethod를 사용하세요 (Python 3.8+).

주의할 점

singledispatch는 첫 번째 인자의 타입만 검사합니다. 여러 인자 타입 조합은 지원하지 않습니다.

자주 묻는 질문

단일 디스패치란 무엇인가요?

functools.singledispatch 로 인자 타입에 따라 다른 구현을 실행하는 함수 오버로딩을 구현합니다.

단일 디스패치 학습 시 주의할 점은 무엇인가요?

singledispatch 는 첫 번째 인자의 타입만 검사합니다. 여러 인자 타입 조합은 지원하지 않습니다.

Continue Learning

Python 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.