Python 클래스와 메서드 정의 빈칸 채우기 문제 풀이(Claude)
2026. 7. 11. 15:34ㆍ파이썬
📌 문제
다음 Python 코드는 "30, 200"을 출력한다. 빈 칸 (1), (2)에 알맞는 코드를 차례로 쓰시오.
( 1 ) Calculator:
( 2 ) add(self,x,y):
return x + y
( 2 ) mul(self,x,y):
return x * y
cal = Calculator()
x = cal.add(10,20)
y = cal.mul(10,20)
print(x, y)
정답
(1) → class
class Calculator:
클래스를 정의할 때는 class 키워드를 사용합니다.
(2) → def
def add(self, x, y):
return x + y
def mul(self, x, y):
return x * y
클래스 안에서 메서드(함수)를 정의할 때는 def 키워드를 사용합니다.
전체 코드 (빈 칸을 채운 상태)
class Calculator:
def add(self,x,y):
return x + y
def mul(self,x,y):
return x * y
cal = Calculator()
x = cal.add(10,20)
y = cal.mul(10,20)
print(x, y)
실행 결과 확인
코드 계산 결과
| cal.add(10, 20) | 10 + 20 | x = 30 |
| cal.mul(10, 20) | 10 × 20 | y = 200 |
| print(x, y) | — | 30 200 |
⚠️ 함정 포인트
- 클래스 정의는 class, 메서드 정의는 def — 둘 다 콜론(:)으로 끝나는 모양이 비슷해서 헷갈리기 쉽습니다.
- self는 메서드의 첫 번째 매개변수로 항상 필요합니다. 인스턴스 자기 자신을 가리키는 참조이며, 호출할 때는 신경 쓰지 않아도 파이썬이 자동으로 넘겨줍니다.
- print(x, y)는 기본적으로 공백으로 구분해서 출력하므로 결과가 30 200으로 보입니다.
- 들여쓰기 구조 — add와 mul은 class Calculator: 블록 안에 속해야 클래스의 메서드로 인식됩니다.
🎯 핵심 개념 정리
class — 클래스 정의
클래스는 관련된 데이터와 기능(메서드)을 하나로 묶는 틀입니다.
class Dog:
def bark(self):
return "Woof!"
def — 함수/메서드 정의
클래스 밖에서 쓰면 일반 함수, 클래스 안에서 쓰면 메서드가 됩니다.
def add(a, b): # 일반 함수
return a + b
class Calculator:
def add(self, x, y): # 메서드 (self 필수)
return x + y
self의 역할
메서드를 호출한 인스턴스 자기 자신을 가리킵니다. 호출 시에는 생략하지만, 정의할 때는 반드시 첫 번째 매개변수로 적어야 합니다.
cal = Calculator()
cal.add(10, 20)
# 실제로는 Calculator.add(cal, 10, 20)처럼 동작
인스턴스 생성과 메서드 호출
cal = Calculator() # 인스턴스 생성
cal.add(10, 20) # 메서드 호출 → 30
✍️ 시험 답안용 한 줄 풀이
첫 번째 빈 칸은 클래스를 선언하는 class 키워드이고, 두 번째 빈 칸(두 곳 모두)은 클래스 내부의 메서드를 정의하는 def 키워드이다. cal.add(10,20)은 30, cal.mul(10,20)은 200을 반환하므로 print(x, y)의 결과는 30 200이다.
🧠 미니 퀴즈
- add 메서드에서 self를 빼고 def add(x, y):로 정의하면 cal.add(10, 20)을 호출할 때 어떤 문제가 생길까요?
- sub(self, x, y) 메서드를 추가해서 x - y를 반환하게 만들려면 어떤 코드를 추가해야 할까요?
- mul 메서드의 반환값을 x * y에서 x ** y로 바꾸면 cal.mul(10, 20)의 결과는?
정답
- self 자리에 실제로는 인스턴스가 자동으로 전달되므로, self를 빼면 x에 인스턴스가, y에 첫 번째 인자(10)가 들어가고 두 번째 인자(20)를 받을 자리가 없어 TypeError(인자 개수 불일치)가 발생합니다.
- 클래스 안에 다음을 추가합니다:
def sub(self, x, y): return x - y - 10 ** 20은 매우 큰 수(1 뒤에 0이 20개, 즉 100,000,000,000,000,000,000)가 됩니다.
'파이썬' 카테고리의 다른 글
| Python 2차원 리스트 인덱싱과 중첩 반복 출력 문제 풀이(Claude) (0) | 2026.07.11 |
|---|---|
| 좌표처럼 값을 꺼내고 행 단위로 출력하기(Chatgpt) (0) | 2026.07.11 |
| 계산기 클래스의 빈칸 완성하기(Chatgpt) (0) | 2026.07.11 |
| Python 2차원 리스트와 중첩 반복문 문제 풀이(Claude) (0) | 2026.07.11 |
| 중첩 리스트를 순회해 원소 개수와 합계 구하기(Chatgpt) (0) | 2026.07.11 |