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 는 첫 번째 인자의 타입만 검사합니다. 여러 인자 타입 조합은 지원하지 않습니다.