Python 3.5+ 용 패키지는 overloading입니다. 이 패키지를 사용하면 메서드를 재정의 할 수 있지만 고유 한 형식 힌트를 사용하면 데코레이터가 어떤 오버로드 된 메서드를 호출해야하는지 알 수 있습니다.Python 3.5 - @overload로 오버로드되는 메소드
일반 코딩 패턴 : @overload 함께
class foo:
def func(param):
if instance(param, int):
pass
elif instance(param, str):
pass
elif instance(param, list):
pass
else:
raise ValueError()
: 여기
class foo:
@overload
def func(param: int):
pass
@overload
def func(param: str):
pass
@overload
def func(param: list):
pass
는 documentation이다.
내 질문은 : 성능에 미치는 영향은 이전 스타일 매개 변수 유형 전환과 비교 얼마나 큰
- ?
- 그리고이 패키지는 어떻게 타입 힌트에 접근합니까?
* 일반적인 코딩 패턴 * - 아니요, 죄송합니다. 대부분의 Python 코드는 isinstance()를 사용할 필요가 없습니다. –
패키지는 Python 3.5에만 한정되지 않습니다. Python 3.5는 표준화 된 유형 힌트 만 제공하지만, Python 3.0 이후부터는 주석을 사용할 수 있습니다. 연결하는 패키지는 3.3 이상을 지원합니다. 당신의 예제는'typing' 모듈을 전혀 사용하지 않습니다. –
[소스 코드] (https://github.com/bintoro/overloading.py/blob/master/overloading.py)를 사용하면 두 번째 질문에 답할 수 있습니다 (기능 주석을 예상대로 읽음). 'dispatcher()'를 보면, 처음에는 'slower'로 갈 것입니다. –