앞에서 클래스와 객체를 배웠죠.
이번에는 객체지향 프로그래밍의 핵심 개념 중 하나인 상속(Inheritance)을 알아볼 거예요.
상속을 잘 활용하면 코드 재사용성이 크게 높아지고, 프로그램 구조가 깔끔해져요!
1️⃣ 상속(Inheritance)이란?
기존 클래스(부모 클래스)의 속성과 메서드를 물려받아 새로운 클래스(자식 클래스)를 만드는 것.
- 코드 중복을 줄이고 유지보수성을 높임
- 자식 클래스에서 기능을 확장하거나 수정 가능
- 큰 프로젝트에서 구조적인 코드 작성이 가능
📝 기본 문법
class 부모클래스:
코드...
class 자식클래스(부모클래스):
코드...
🔹 예제 1: 기본 상속
class Animal:
def speak(self):
print("동물이 소리를 냅니다.")
class Dog(Animal):
def bark(self):
print("멍멍!")
dog = Dog()
dog.speak() # 동물이 소리를 냅니다.
dog.bark() # 멍멍!
📌 Dog 클래스가 Animal 클래스를 상속받아 메서드를 그대로 사용할 수 있음!
2️⃣ 메서드 오버라이딩(Method Overriding)
부모 클래스의 메서드를 자식 클래스에서 재정의해서 동작을 바꾸는 것.
class Animal:
def speak(self):
print("동물이 소리를 냅니다.")
class Cat(Animal):
def speak(self):
print("야옹!")
cat = Cat()
cat.speak() # 야옹!
📌 부모 클래스의 speak()를 자식 클래스에서 새로 정의했어요.
이걸 메서드 오버라이딩이라고 해요.
3️⃣ super()로 부모 메서드 호출
super()는 부모 클래스의 메서드나 속성을 호출할 때 사용.
class Animal:
def __init__(self, name):
self.name = name
print(f"{self.name} 생성!")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name)
self.breed = breed
print(f"{self.breed} 종입니다.")
dog = Dog("초코", "푸들")
출력
초코 생성!
푸들 종입니다.
📌 super() 덕분에 부모 클래스의 __init__ 메서드도 쉽게 호출 가능!
🧩 상속 관계 확인하기
파이썬 내장 함수 isinstance()와 issubclass()로 클래스 관계를 확인할 수 있어요.
print(isinstance(dog, Dog)) # True
print(isinstance(dog, Animal)) # True
print(issubclass(Dog, Animal)) # True
🎯 오늘의 핵심 정리
상속으로 코드 재사용성 극대화
자식 클래스에서 부모 메서드 오버라이딩 가능
super()로 부모 클래스의 기능 호출
isinstance(), issubclass()로 상속 관계 확인
🔜 다음 글 예고
[파이썬] 코드 재사용을 위한 모듈 & 패키지 이해하기
이제 파일 단위로 코드를 나누는 법을 배워서, 더 깔끔한 프로젝트를 만들어봅시다.
'SK-Rookies > 파이썬' 카테고리의 다른 글
| [파이썬] 표준 라이브러리 완전정리 (0) | 2025.09.03 |
|---|---|
| [파이썬] 코드 재사용을 위한 모듈 & 패키지 이해하기 (0) | 2025.09.03 |
| [파이썬] 객체지향 프로그래밍 입문: 클래스와 객체 (0) | 2025.07.04 |
| [파이썬] 에러 걱정 끝! try-except로 예외 처리 배우기 (0) | 2025.07.04 |
| [파이썬] 파일 입출력 I/O 완전정리 – open, read, write까지 (0) | 2025.07.04 |