본문 바로가기
방구석코딩/파이썬 기초문법

[파이썬 독학] 클래스의 상속 : 자식 클래스와 부모 클래스

by 석세상 2022. 7. 26.
반응형

앞에서 클래스에 대해서 알아봤는데요. 기본적으로는 클래스는 '함수의 집합이다'라고 생각하면 됩니다. 이제 클래스가 무엇이고 어떻게 사용하는지에 대해 이해가 어느 정도는 되었다고 생각하고, 클래스를 사용하는 또 다른 방법인 클래스의 상속에 대해서 알아보도록 하겠습니다.

 

 

클래스의 상속이란

우리가 클래스를 만들어 봤는데요. 이런저런 정보를 만들다 보니 필요한 정보가 있어서 또 다른 클래스를 생성했다고 합시다. 그런데 새로 만든 클래스에서 사용되는 것들이 기존에 만들었던 멤버 변수와 동일한 부분이 있어서 다시 한번 만들게 되면 불필요한 작업이 생기게 됩니다.

 

그러면 기존에 있던 부분을 그대로 가져와서 새로운 클래스에 적용한다면 조금 더 작업이 단순해질 텐데요. 이와 같이 기존의 클래스의 정보를 받아와서 새로 만든 클래스에 적용하는 것을 클래스의 상속이라 합니다. 이때 기존에 있던 클래스의 정보를 받아서 사용하는 클래스를 자식 클래스, 정보를 주는 클래스를 부모 클래스라고 부릅니다.

 

 

자식 클래스와 부모 클래스 활용법

부모 클래스

일반적으로 한 과일의 종류만 넣어서 주스를 만들 때에는 juice라는 클래스를 이용해서 만든다고 합시다. 그러면 여기서 __init__ 부분에 보시면 fruit과 price라는 2개의 변수가 있는 걸 보실 수 있습니다. 시럽의 경우는 추가 일 때만 사용하고요. 아래 시럽 함수는 매서드라고 하는 데 사용법은 앞에서 배웠던 링크를 아래 부분에 참조로 걸어를 참고하시면 될 것 같아요.

 

하지만 현재 상태로는 아직 부모 클래스라고 할 수 없습니다. 그냥 클래스죠. 이게 부모 클래스가 되려면 자식 클래스가 있어야 합니다. 자식이 있어야 부모라 할 수 있으니까요.

부모 클래스

 

[파이썬 독학] 클래스(class)에서 메서드(method)와 사용법 (tistory.com)

 

[파이썬 독학] 클래스(class)에서 메서드(method)와 사용법

이전에 우리는 클래스 구성과 사용 예시와 함께 멤버 변수가 무엇인지 알아보았고, 또 클래스 내부에서 사용하는 방법과 외부에서 사용하는 방법에 대해서 알아보았습니다. 오늘은 메서드라는

gusugi.tistory.com

 

 

자식 클래스

아래와 같은 클래스를 자식 클래스라고 합니다. 부모 클래스는 일반 클래스와 특별히 다른 점이 없지만 자식 클래스는 잘 알아두어야 합니다. 먼저 위의 부모 클래스를 보면 class 옆에 괄호가 없는 것을 알 수 있습니다. 자식 클래스의 경우는 이 부분에 부모 클래스의 이름을 넣어주어야 합니다. 그럼 해당 클래스의 변수를 사용할 수 있습니다. 

 

그리고 빨간 줄이 쳐진 부분을 보시면 부모 클래스인 juice의 __init__에 해당하는 부분의 필요한 변수를 괄호 안에 넣어줍니다. juice 클래스에 있는 fruit와 price를 가져온 걸 볼 수 있네요. 그리고 자식 클래스에서 추가로 정의한 변수를 작성합니다.  그리고 자식 클래스에서 추가한 변수는 __init을 정의한 부분에 넣어주어야 하고요. 

 

마지막으로 mix_price는 원래 단일 과일만 선택한 금액에서 추가 과일 종류를 선택했을 때 추가되는 금액을 더한 금액입니다. 그래서 st_ba1이라는 딸기 바나나 주스의 객체를 실행하면 부모 클래스에서 실행되는 출력문이 한번 실행되게 되고요. 그다음에 자식 클래스에서 입력한 출력문이 실행되는 것이죠. 

 

결과를 보면 fruit에는 딸기, price에는 3000이라는 금액이 들어갑니다. 그래서 부모 클래스에서 가져온 출력문인 "딸기주스가 나왔습니다. 기본 가격은 3000원입니다"라는 문구가 출력되죠. 그리고 자식 클래스에서 추가된 mix_fruit에 바나나, add_price에 500원인 가격이 추가되었습니다. 그리고 mix price는 기본 가격인 3000원과 추가 가격인 500원이 더해져 mix_price의 가격은 3500원이 출력되는 것이죠.

자식 클래스

 

이렇게 다른 클래스에 있는 정보를 그대로 가져와 적용하면 추가되는 부분만 작성하면 되니 훨씬 효율적으로 프로그램을 작성할 수 있는 것이죠. 부모 클래스와 자식 클래스에 대해서 조금 이해가 되셨나요? 

 

저도 공부를 하면서 만들다 보니 원하는 결과가 나오지 않을 때가 많은데 하나씩 이것도 넣어봤다가 저것도 넣어봤다가 해보면서 하니 시간이 오래 걸리네요. 하지만 이렇게 몸으로 체감하면서 하는 것이 좀 더 언어를 습득하는데 도움이 될 것으로 생각되니 보시는 분들도 생각한 것을 실제로 작성해보고 실행해보면서 하면 좋을 것 같습니다. 

 

내용에 잘못된 부분이 있어나 수정/보완해야 하는 부분을 남겨주시면 감사하겠습니다.^^

 

728x90
반응형

댓글