1. 메소드 오버로딩 (Method Overloading)
중복정의
메소드 오버로딩은 동일한 클래스 안에서 메소드 이름이 같지만 매개변수의 개수, 자료형이 다른 것을 의미한다.
파이썬은 메소드 오버로딩을 지원하지 않는다.
동적 타입 검사 -> 실행 시 타입 검사(타입 에러가 실행시에 발견)
class Book():
def registration(self, author, book_name):
return author
def registration(self, author, book_name, publisher):
return author
if __name__ == '__main__':
a = Book()
print(a.registration("김학진", "나는 전설이다"))
print(a.registration("김학진", "나는 전설이다", "blex"))
Traceback (most recent call last):
File "D:/CloudStation/SourceCode/sole/test.py", line 10, in <module>
print(a.registration("김학진", "나는 전설이다"))
TypeError: registration() missing 1 required positional argument: 'publisher'
A. 가변 인자
가변 인자를 사용하여 함수명이 같지만 매개변수를 다양하게 처리할 수 있음
가변 인자는 인수의 갯수에 제한이 없다.
단, 매개변수의 자료형은 tuple임.
class Book():
def registration(self, *argv):
return argv
if __name__ == '__main__':
a = Book()
print(a.registration("김학진", "나는 전설이다"))
print(a.registration("김학진", "나는 전설이다", "blex"))
('김학진', '나는 전설이다')
('김학진', '나는 전설이다', 'blex')
B. 키워드 가변 인자
매개변수의 자료형이 Dictionary임.
class Book():
def registration(self, **kwargs):
return kwargs
if __name__ == '__main__':
a = Book()
print(a.registration(name="김학진", book_name="나는 전설이다"))
print(a.registration(name="김학진", book_name="나는 전설이다", publisher="blex"))
{'name': '김학진', 'book_name': '나는 전설이다'}
{'name': '김학진', 'book_name': '나는 전설이다', 'publisher': 'blex'}
C. 고정 인자와 가변 인자 같이 쓰기
매개변수의 순서는 고정 매개변수, *args, **kwargs 순서로 지정한다.
def book(a, *args, **kwargs):
print(a, *args, **kwargs)
[1] hyeonggi.kim, [Python 입문] 14. 파이썬 오버라이딩과 오버로딩 (tistory.com). Tistory. (accessed Aug 10, 2021)
[2] junior_datalist. 파이썬 메소드 오버라이딩, 오버로딩 (tistory.com). Tistory. (accessed Aug 10, 2021)
[3] suasue. Python | 가변인자(args)와 키워드 가변인자(*kwargs) (velog.io). Velog. (accessed Aug 10, 2021)
#파이썬 #오버로딩 #고정인자 #가변인자 #키워드고정인자
Ghost