함께 쓰는 값에 하나의 이름을 붙여요
함수와 변수를 배웠어요. 점수와 감점처럼 함께 쓰는 값을 하나의 묶음으로 다루고 싶을 때 클래스를 만들 수 있어요. 클래스는 이런 객체를 만들기 위한 정의예요. 객체는 그 정의로 실제로 만든 값의 묶음이에요.
class ScoreCard:
pass
card = ScoreCard()
card.points = 12
card.penalty = 3
class ScoreCard:는 클래스를 정의해요. pass는 아직 할 일이 없는 빈 본문을 유효하게 두는 문장이에요. ScoreCard()를 호출하면 새 객체를 만들고 card가 그 객체를 가리켜요. card.points와 card.penalty는 그 객체에 속한 속성이에요. 그림은 두 값이 한 객체에 담긴 관계를 보여 줘요.
점 뒤의 이름으로 객체 값을 읽어요
같은 객체의 최종 점수는 card.points - card.penalty예요. 예제에서는 12 −3 = 9예요. 점은 객체에서 이름을 찾는 표현이에요. 리스트의 append를 쓸 때도 점으로 기능을 찾았어요.
net = card.points - card.penalty
print(net)
card의 속성을 읽어도 원래 값이 자동으로 변하지는 않아요. 새 ScoreCard()를 호출하면 별도 객체예요. 아직 속성을 설정하지 않은 객체에서 points를 읽으면 오류가 나므로 값을 저장한 뒤 사용해요. 다음 레슨에서는 새 객체를 만들 때 필요한 값을 한 번에 설정해요.
직접 풀어봐요
ScoreCard 클래스를 정의하고 card 객체에 points와 penalty를 저장해요. 최종 점수 points −penalty를 출력해요.
첫 줄 points(01000), 둘째 줄 penalty(0points)이에요. 출력은 최종 점수와 줄 바꿈이에요. 클래스·객체 생성·입력·출력을 포함한 전체 프로그램을 작성해요.
예시 1: points = 12, penalty = 3 → 9예요.
예시 2: points = 20, penalty = 7 → 13예요.
예시 입력
12 3
예상 결과
9
예시 입력
20 7
예상 결과
13
핵심 개념
oop-inheritance-poly: 클래스와 그 정의로 만든 객체를 구분하고, 객체의 속성에 값을 저장하고 읽어요.