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

⚠️ 함정 포인트

  1. 클래스 정의는 class, 메서드 정의는 def — 둘 다 콜론(:)으로 끝나는 모양이 비슷해서 헷갈리기 쉽습니다.
  2. self는 메서드의 첫 번째 매개변수로 항상 필요합니다. 인스턴스 자기 자신을 가리키는 참조이며, 호출할 때는 신경 쓰지 않아도 파이썬이 자동으로 넘겨줍니다.
  3. print(x, y)는 기본적으로 공백으로 구분해서 출력하므로 결과가 30 200으로 보입니다.
  4. 들여쓰기 구조 — 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이다.


🧠 미니 퀴즈

  1. add 메서드에서 self를 빼고 def add(x, y):로 정의하면 cal.add(10, 20)을 호출할 때 어떤 문제가 생길까요?
  2. sub(self, x, y) 메서드를 추가해서 x - y를 반환하게 만들려면 어떤 코드를 추가해야 할까요?
  3. mul 메서드의 반환값을 x * y에서 x ** y로 바꾸면 cal.mul(10, 20)의 결과는?

정답

  1. self 자리에 실제로는 인스턴스가 자동으로 전달되므로, self를 빼면 x에 인스턴스가, y에 첫 번째 인자(10)가 들어가고 두 번째 인자(20)를 받을 자리가 없어 TypeError(인자 개수 불일치)가 발생합니다.
  2. 클래스 안에 다음을 추가합니다:
    def sub(self, x, y):    return x - y
    
  3. 10 ** 20은 매우 큰 수(1 뒤에 0이 20개, 즉 100,000,000,000,000,000,000)가 됩니다.