← 학습 코스

기본 동작에 보너스 더하기

Python전체 작성형

기존 클래스를 바탕으로 새 클래스를 만들어요

객체·init·self·메서드를 배웠어요. 기본 계산을 공유하면서 한 부분만 달라질 때 상속을 사용할 수 있어요. 괄호 안의 Record는 기반 클래스예요.

class Record:
    def __init__(self, units):
        self.units = units

    def points(self):
        return self.units * 2

class RewardRecord(Record):
    pass

RewardRecord는 Record의 초기화와 points를 물려받아요. RewardRecord(3).points()는 6이에요. pass는 이 레슨에서 처음 등장한 기능이 아니라 첫 객체 레슨의 빈 본문 표현이에요. 세 번째 페이지에서 공통 계산에 보너스를 더하는 관계를 확인해요.

super로 기반 클래스의 초기화를 호출해요

보너스를 저장하려면 RewardRecord 안에 초기화 메서드를 다시 정의해요.

    def __init__(self, units, bonus):
        super().__init__(units)
        self.bonus = bonus

super()는 현재 상속 구조에서 기반 클래스의 동작을 호출할 때 써요. 이 예제의 super().init(units)는 Record의 초기화를 실행해 self.units를 설정해요. 이어 self.bonus를 저장해요. RewardRecord(3, 5)객체는 units = 3, bonus = 5를 함께 가져요.

같은 메서드 이름의 동작을 바꿔요

RewardRecord의 points를 다시 정의하면 그 객체는 새 메서드를 사용해요. 이를 오버라이드라고 해요.

    def points(self):
        return super().points() + self.bonus

같은 예제에서는 super().points()가 3×2인 6을 반환하고 bonus 값 5를 더해 11이 돼요. 기반 객체 Record(3)의 points는 6 그대로예요. self.points()를 자기 points 안에서 호출하면 같은 메서드를 끝없이 다시 호출할 수 있어요. 기반 동작을 재사용하려면 super를 구분해서 써요.

Record의 units×2 계산은 공통으로 쓰고 RewardRecord는 기반 결과에 bonus 값 5를 더해 11을 반환하는 관계

직접 풀어봐요

Record는 units×2를 점수로 반환해요. RewardRecord는 Record를 상속하고 기반 점수에 bonus를 더해 반환해요. 두 클래스를 정의하고 같은 units의 기본 객체 점수와 보너스 객체 점수를 각 한 줄에 출력해요.

첫 줄 units(01000), 둘째 줄 bonus(01000)이에요.

예시 1: units = 3, bonus = 5 → 출력 줄 6, 11이에요. 예시 2: units = 7, bonus = 2 → 출력 줄 14, 16예요.

예시 입력

3
5

예상 결과

6
11

예시 입력

7
2

예상 결과

14
16
핵심 개념
  • oop-inheritance-poly: 상속·super·오버라이드를 구분해 기반 객체 동작을 유지하면서 보너스 객체의 계산을 확장해요.

코드 작성과 채점은 로그인 후 이용해요

로그인하고 풀기