← 학습 코스

새 객체의 초기값과 메서드

Python전체 작성형

__init__으로 처음 값을 설정해요

클래스·객체·속성을 배웠어요. 객체를 만들 때 필요한 초기값을 매번 따로 쓰는 대신 __init__ 메서드에 둘 수 있어요. 메서드는 객체와 함께 쓰는 함수예요.

class Counter:
    def __init__(self, start):
        self.total = start

first = Counter(3)
second = Counter(8)

Counter(3)이 새 객체를 만들면 __init__이 실행돼요. self는 지금 초기화하는 그 객체이고 start는 전달한 3이에요. first.total은 3, second.total은 8이에요. __init__의 양쪽 밑줄은 이름의 일부예요. 직접 다른 이름으로 바꾸지 않아요. 다음 페이지의 그림에서 두 객체의 값이 독립적인 것을 확인해요.

메서드 호출에서 self는 객체예요

Counter 안에 다음 메서드를 추가해요. 클래스 안의 def 앞에는 공백 4개, 그 안의 문장 앞에는 공백 8개가 있어요.

    def add(self, amount):
        self.total = self.total + amount

first.add(2)를 호출하면 self는 first의 객체, amount는 2예요. first.total은 5가 되고 second.total은 8 그대로예요. add는 상태를 바꾸는 메서드여서 이 레슨에서는 값을 return 하지 않아요. 결과를 읽으려면 다시 first.total을 사용해요.

self를 호출 인자로 직접 넣지 않아요. first.add(2)라는 표현이 객체를 전달해 줘요. 어떤 객체의 메서드를 호출했는지에 따라 바꾸는 대상도 달라져요.

Counter(3)와 Counter(8)로 만든 first·second는 별도 객체이며 first.add(2)는 first.total만 5로 바꾸는 관계

직접 풀어봐요

Counter 클래스에 init(self, start)와 add(self, amount)를 만들어요. 두 객체를 각 초기값으로 만든 뒤 각 객체에 지정한 증가량을 더해요. 첫 객체 최종값과 둘째 객체 최종값을 각 한 줄에 출력해요.

입력은 네 줄로 startA, startB, amountA, amountB 순서이며 각 0~1000이에요.

예시 1: 3·8·2·1 → 출력 줄 5, 9예요. 예시 2: 10·4·0·6 → 출력 줄 10, 10예요.

예시 입력

3
8
2
1

예상 결과

5
9

예시 입력

10
4
0
6

예상 결과

10
10
핵심 개념
  • oop-inheritance-poly: __init__이 객체의 초기값을 정하고, self로 현재 객체의 속성만 바꿔요.

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

로그인하고 풀기