# 파이썬은 오버로딩이 안된다.

- Author: @mildsalmon
- Published: 2021-08-10
- Updated: 2021-08-10
- Source: http://blex.me/@mildsalmon/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%80-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9%EC%9D%B4-%EC%95%88%EB%90%9C%EB%8B%A4
- Tags: 파이썬, 가변인자, 키워드고정인자, 오버로딩, 고정인자

---

# 1. 메소드 오버로딩 (Method Overloading)

중복정의

메소드 오버로딩은 동일한 클래스 안에서 메소드 이름이 같지만 매개변수의 개수, 자료형이 다른 것을 의미한다.

파이썬은 메소드 오버로딩을 지원하지 않는다.

동적 타입 검사 -> 실행 시 타입 검사(타입 에러가 실행시에 발견)

```python

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임.

```python

class Book():  
    def registration(self, *argv):  
        return argv  
  
  
if __name__ == '__main__':  
    a = Book()  
    print(a.registration("김학진", "나는 전설이다"))  
    print(a.registration("김학진", "나는 전설이다", "blex"))

```

```

('김학진', '나는 전설이다')
('김학진', '나는 전설이다', 'blex')

```

### B. 키워드 가변 인자

매개변수의 자료형이 Dictionary임.

```python

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 순서로 지정한다.

```python

def book(a, *args, **kwargs):  
    print(a, *args, **kwargs)

```

[1] hyeonggi.kim, [[Python 입문] 14. 파이썬 오버라이딩과 오버로딩 (tistory.com)](https://hyeonggi.tistory.com/entry/Python-%EC%9E%85%EB%AC%B8-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9%EA%B3%BC-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9). Tistory. (accessed Aug 10, 2021)

[2] [junior_datalist](https://junior-datalist.tistory.com/). [파이썬 메소드 오버라이딩, 오버로딩 (tistory.com)](https://junior-datalist.tistory.com/96?category=866196). Tistory. (accessed Aug 10, 2021)

[3] [suasue](https://velog.io/@suasue). [Python | 가변인자(*args)와 키워드 가변인자(**kwargs) (velog.io)](https://velog.io/@suasue/Python-%EA%B0%80%EB%B3%80%EC%9D%B8%EC%9E%90args%EC%99%80-%ED%82%A4%EC%9B%8C%EB%93%9C-%EA%B0%80%EB%B3%80%EC%9D%B8%EC%9E%90kwargs). Velog. (accessed Aug 10, 2021)
 
 #파이썬 #오버로딩 #고정인자 #가변인자 #키워드고정인자
