5장 연습문제 2번에 대해 질문있습니다
class Calculator:
    def __init__(self):
        self.value = 0

    def add(self, val):
        self.value += val

class MaxLimitCalculator(Calculator):
    def add(self, val):
        self.value += val
        if self.value > 100:
            return 100
        else:
            return self.value

cal = MaxLimitCalculator()
print(cal.add(50))
print(cal.add(60))
print(cal.value)

정답대로 했을때는 출력값이 none, none, 100이 나왔는데 제가 쓴 식은 왜 50 100 110으로 나오는지 모르겠습니다.

코딩_스타터 463

M 2022년 1월 29일 11:26 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

MaxLimitCalculator의 add 메서드에서 return을 하고 안하고의 차이입니다.

박응용

2022년 2월 2일 9:12 오후

그러면 최종값도 똑같이 100으로 나와야 하는거 아닌가요? - 코딩_스타터님, 2022년 2월 4일 3:07 오후 추천 , 대댓글
@코딩_스타터님 self.value += val 을 무조건 먼저해서 그렇습니다. - 박응용님, 2022년 2월 4일 5:43 오후 추천 , 대댓글
@박응용님 마지막 print(cal.value) 같은 경우 if에 걸려서 100으로 나올 줄 알았는데 else에 걸린건가요? 잘 몰라서요... - 코딩_스타터님, 2022년 2월 4일 10:14 오후 추천 , 대댓글
+1 @코딩_스타터님 if 문과 상관없이 add 메서드에서 self.value += val 을 하기 때문에 add 호출시 self.value 값은 계속 증가합니다. 따라서 100 까지만 설정할수 없습니다. 정답 코드와 비교해 보세요. - 박응용님, 2022년 2월 4일 11:50 오후 추천 , 대댓글