본문 바로가기
두두 IT/파이썬 퀴즈

[W3S 오답노트] Python Inheritance

by DoDo's 2026. 5. 6.
반응형

Sutudent(Person)

🧬 파이썬 완벽 가이드: 부모의 능력을 그대로 물려받기 (클래스 상속)

'상속(Inheritance)'은 단어 뜻 그대로 부모의 재산이나 능력을 자식에게 고스란히 물려주는 것을 의미합니다.

만약 우리가 '사람(Person)'이라는 클래스(기본 붕어빵 틀)를 이미 아주 잘 만들어 두었는데, 이번에는 사람 중에서도 '학생(Student)'이라는 특별한 클래스를 새로 만들고 싶다고 가정해 보겠습니다. 학생도 결국 사람이니까 이름도 있고, 나이도 있고, 인사하는 기능도 필요하겠죠?

이때 똑같은 코드를 처음부터 다시 치는 것은 너무 비효율적입니다. 그래서 파이썬에게 "학생 클래스를 만들 건데, 기본적인 기능은 저기 있는 사람 클래스에서 다 가져와서 써!" 라고 명령하는 것이 바로 상속입니다.

📖 핵심 원리: 괄호 () 안에 부모 이름 적기

문법은 아주 간단합니다. 새로운 클래스를 만들 때, 클래스 이름 뒤에 괄호를 열고 물려받을 부모 클래스의 이름을 적어주기만 하면 됩니다.

  • class Student(Person): "지금부터 Student라는 클래스를 만들 건데, 얘는 Person 클래스의 모든 능력을 상속받는다!"

💻 코드로 보는 상속의 마법

Python
 
# [1] 부모 클래스 (기본적인 사람 틀)
class Person:
  def __init__(self, name):
    self.name = name

  def say_hello(self):
    print(f"안녕하세요! 제 이름은 {self.name}입니다.")

# ---------------------------------------------------------

# [2] 자식 클래스 (Person을 상속받은 학생 틀)
class Student(Person):
  pass # 'pass'는 일단 이 안에는 아무것도 안 적고 넘어가겠다는 뜻입니다.

# [3] 마법 확인해 보기!
# Student 틀로 p1이라는 객체를 만들고 인사를 시켜봅니다.
p1 = Student("김코딩")
p1.say_hello() 

# 출력 결과: 안녕하세요! 제 이름은 김코딩입니다.

코드를 보시면 Student 클래스 안에는 분명 아무 내용도 적지 않았습니다(pass). 하지만 부모인 Person을 상속받았기 때문에, say_hello()라는 인사 기능을 마치 자기 것처럼 아주 자연스럽게 사용할 수 있게 된 것입니다!

이렇게 상속을 사용하면 코드를 중복해서 작성할 필요가 없어지므로 프로그램이 훨씬 깔끔하고 강력해집니다.


📝 핵심 한 줄 총정리 요약

"기존에 만들어둔 클래스의 기능을 그대로 물려받아 새로운 클래스를 만들고 싶다면 class 자식클래스명(부모클래스명): 형태로 괄호 안에 부모 이름을 적어주자!"

 

 

x.printname()

🧬 파이썬 완벽 가이드: 물려받은 부모의 능력 사용하기

우리는 앞서 마침표(.)가 "객체 안에 있는~" 이라는 뜻이라고 배웠습니다. 그리고 방금 전에는 자식 클래스(Student)가 부모 클래스(Person)의 능력을 그대로 물려받는 '상속'을 배웠죠.

이 두 가지를 합치면 아주 자연스러운 논리가 완성됩니다.

💻 코드로 보는 완벽한 흐름

Python
 
# [1] 부모 클래스 (Person) 안에는 printname 이라는 기능(메서드)이 있습니다.
class Person:
  def __init__(self, fname):
    self.firstname = fname

  def printname(self):
    print(self.firstname)

# [2] 자식 클래스 (Student)는 Person의 능력을 그대로 상속받습니다.
class Student(Person):
  pass

# [3] Student 틀을 이용해 'Mike'라는 이름을 가진 붕어빵 객체 'x'를 구워냅니다.
x = Student("Mike")

# [4] 정답! 마침표(.)를 이용해 x 안에 있는(상속받은) printname 기능을 실행합니다!
# (함수나 메서드를 '실행'할 때는 반드시 뒤에 괄호 ()를 붙여주어야 합니다.)
x.printname()

# 출력 결과: Mike

Student 클래스 코드 안에는 아무것도 적혀있지 않지만(pass), 부모인 Person에게서 printname 기능을 물려받았기 때문에 x라는 객체는 마치 처음부터 자기 것인 양 당당하게 x.printname()을 호출하여 사용할 수 있는 것입니다.


📝 핵심 한 줄 총정리 요약

"부모에게 상속받은 기능(메서드)도 내 것처럼 똑같이 객체 이름 뒤에 마침표(.)를 찍고 괄호()를 열고 닫아서 실행할 수 있다!"

반응형