TIL - python(연습문제) #상속과 메서드 오버라이딩

한성봉·2021년 4월 22일

이 글은 도서 '점프 투 파이썬' 연습문제를 토대로 작성하였습니다.

오늘은 점프 투 파이썬 연습문제를 풀어보았다. class 상속과 메서드 오버라이딩 주제의 문제였다. 아래 문제를 한번 살펴보자.

Q2. 객체변수 value가 100 이상의 값은 가질 수 없도록 제한하는 MaxLimitCalculator 클래스를 만들어 보자. 즉 다음과 같이 동작해야한다.

cal = MaxLimitCalculator()
cal.add(50) # 50 더하기
cal.add(60) # 60 더하기
print(cal.value) # 100출력

단 반드시 다음과 같은 Calculator 클래스를 상속해서 만들어야 한다.

class Calculator():
    def __init__(self):
        self.value = 0
    def add(self):
        self.value += val

일단 문제를 풀어보았다.

class MaxLimitCalculator(Calculator):
    def limit(self):
        if self.value <= 100:
          print(cal.value)
        else:
          print('100')
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value) 

Calculator 클래스를 상속받는 조건이었기에 상속받아주었고 100까지 값을 제한 시키는 함수(메서드)를 만들어 보았다. 하지만 110이란 값이 계속 출력되었고 내가 만든 함수로는 정답을 만들지 못했다.

아래 조건을 사용하여 정답을 도출하여야 하기 때문에 limit함수를 정의 한 것은 접근이 잘못되었다는 것을 알았다.

class MaxLimitCalculator(Calculator):
    def add(self, val):
        self.value += val
        if self.value > 100:
            self.value = 100
cal = MaxLimitCalculator()
cal.add(50)
cal.add(60)
print(cal.value)

이렇게 하면 출력값이 100이 되는 것을 볼 수 있다. limit함수를 정의해서 사용할 필요는 없었고 add메서드에서 조건문을 사용하여 정답을 도출할 수 있었다. 아직 함수와 클래스의 개념에 조금 덜 익숙한 듯하다 기본 개념을 더 확실히 할 필요가 있다고 느꼈다. 하지만 조건문을 시도한 것은 좋은 접근이었다고 생각한다.

0개의 댓글