- 메소드 이름이 동일한 경우, 가장 최근에 정의한 메소드로 덮어씀(overwriting)
- python은 overloading을 기본적으로 지원하지 않음
① 비효율적 해결방법: 조건문
② 효율적 해결방법: multipledispatch 라이브러리
인자와 파라미터 갯수에 따라서 알아서 처리
# 가장 마지막에 실행된 함수 add(a,b) 함수가 앞에 있는 add(a) 함수를 덮어씀.
def add(a):
return a + 1
def add(a, b):
return a + b
add(1) # 해당 함수는 add(a,b)에의해 오버로딩됨
==> TypeError: add() missing 1 required positional argument: 'b'
add(1,2)
==> 3
# positional argument
sum((1,2,3,4))
==> 10
#argument는 2개가 필요한데 4개를 넣으면 에러를 일으킨다.
sum(1,2,3,4)
==> TypeError: sum expected at most 2 arguments, got 4
#positional only 방식이므로 keyword 방식으로 argument를 넣으면 에러를 일으킨다.
sum(iterable=(1,2,3,4))
==> TypeError: sum() takes no keyword arguments