✔️ Python Super 란
Super() 함수는 super class, 상속받은 부모 클래스를 호출하는 함수입니다.
Super 를 설명하기 전 필수 개념인 상속을 잠깐 살펴보고 넘어가보도록 하겠습니다.
다음과 같이 ParentClass와 ChildClass 두개의 클래스를 만들었을 때, (name, number) argument 가 중복되게 됩니다.
이런 경우 ChildClass 가 ParentClass 를 상속받아 동일한 코드가 반복되는 것을 피할 수 있습니다.
하지만 코드를 작성 후 다음과 같이 실행하였을 때,
다음과 같이 에러가 발생하게 됩니다. score 는 잘 나오나 name과 number를 ChildClass 클래스에서 선언해주지 않았기 때문에 생기는 문제입니다. 이 때 Super() 를 사용하면 문제가 해결됩니다. 즉, Super()는 상속받은 부모 Class 를 가리킨다고 생각하면 됩니다.
✔️ Python Super 의 사용예제
ChildClass에 super().__init__() 를 적어줌으로써 super()는 부모 클래스인 ParentClass를 가리키게 됩니다. 매직 메소드 init 안에 name, number argument를 넣어주면 됩니다.
다음과 같이 모든 결과값이 잘 나오는 걸 확인할 수 있습니다.
✔️ Python Super 의 사용예제2
위에서처럼 상속받는 argument들을 모두 써주어도 되나 인수가 많아지면 다 적기란 쉽지 않을 것입니다. 그 때는 *args 나 **kwargs 를 적음으로써 부모 클래스의 모든 argument를 상속받을 수 있습니다. 예제에서는 name과 number 를 대체하여 **kwargs 로 적었습니다.
'Language > Python' 카테고리의 다른 글
[Python] Staticmethod vs Classmethod | LIM (0) | 2022.12.16 |
---|---|
[Python] 일급객체(First Class Object)란? | LIM (0) | 2022.12.11 |
[Python] MultiProcessing map() vs imap() | LIM (0) | 2022.09.19 |
[Python] 코루틴으로 짜여있지 않은 함수 비동기적으로 이용하기(feat.run_in_executor) | LIM (0) | 2022.07.14 |
[Python] 비동기 프로그래밍 | LIM (0) | 2022.07.09 |
댓글