파이썬 여름방학 스터디/3. 클래스

5-2. 클래스와 상속

꿀복피그 2023. 8. 28. 12:36

자, 오늘 상속까지 배우면 클래스의 기본은 이해하고 많은 작업에서 이용할 수 있을거예요!

우리 조금만 더 힘내봐요!

 

먼저, 앞선 글에서 상속이 무엇인지 가볍게 한 줄로 정리하면서 예고편을 던졌는데

오늘은 상속의 쓰임과 기능에 대해 좀 더 자세히 살펴봐요

 

1. 상속

 상속은 기존의 정의해둔 클래스의 기능을 그대로 물려받는 걸 말해요. 잠시 후에 배우게 될 오버라이딩(overriding)을 통해기존 클래스에 기능 일부를 추가하거나, 변경하여 새로운 클래스를 정의할 수 있기도 하구요.

상속의 쓰임으로는 코드를 번거롭게 두번 만들지 않아도 되고 재사용이 가능하다는 것과 안정적이고 유지보수에 용이하다는 것이 있어요.

우리는 상속을 주고자 하는 기존 클래스를 부모, parent, super, base 클래스라고 불러요

상속을 받는 새로운 클래스는 자식, child, sub 클래스라고 부르죠.

 

그럼, 아래 예시를 통해 한번 살펴보도록 해요

class Animal:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def eat(self, food):
    print(f'{self.name}은(는) {food}를 먹습니다.')

  def sleep(self, hour):
    print(f'{self.name}은(는) {hour}시간 잡니다.')

Animal 이라는 이름의 클래스를 짜고, 메서드를 생성했어요

person = Animal('꿀복피그', 23)
person.eat('고기')
person.sleep(3)

person 이라는 객체를 만들고 메서드를 이용해주면 정상적으로 출력이 되겠죠?

class Pig(Animal): # Animal 클래스를 상속
  pass

이제 Pig 라는 클래스를 새롭게 만들고 기존에 만들었던 Animal이라는 클래스를 상속받았어요

상속받을 때 형식은 

class 클래스_이름(상속할_클래스_이름)

이렇게 괄호 속에 parent 클래스를 넣어주면 돼요

jin = Pig('꿀피', 0)
jin.eat('사료')
jin.sleep(10)

그리고 Pig 클래스로 출력해보면 아마 똑같이 Animal 클래스의 메소드를 사용할 수 있을거예요

 

자, 이제는 메서드 오버라이딩(method overriding)에 대해 알아볼거예요

 

2. 메서드 오버라이딩(method overriding)

메서든 오버라이딩은 부모 클래스에 있는 메서드를 동일한 이름으로 다시 만드는 것을 의미해요.

즉 각종 다른 추가 기능을 넣거나 기능을 변경해서 사용할 수 있는거죠.

 

아래 예시 코드를 통해 이해해봅시다.

class Animal:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def eat(self, food):
    print(f'{self.name}은(는) {food}를 먹습니다.')

  def sleep(self, hour):
    print(f'{self.name}은(는) {hour}시간 잡니다.')
class Pig(Animal):
  def eat(self, food):
    print(f'{self.name}은(는) {food}를 아주 맛있게 먹습니다.')

 

기존의 eat 메서드는 '먹습니다' 였는데 오버라이딩을 통해 '아주 맛있게 먹습니다'

로 바꿔줬어요.

이렇게 변경한 뒤에 호출하면 변경된 채로 출력된답니다.

 

자! 오늘도 상속에 대해 이해하느라 수고 많았어요!

이제 다음 시간에 만나도록 해요~꿀

'파이썬 여름방학 스터디 > 3. 클래스' 카테고리의 다른 글

5-1. 객체지향과 클래스  (2) 2023.08.28