본문 바로가기

프로그래밍 언어/파이썬

파이썬(Python) 상속 기본 개념과 실전 예제

파이썬(Python) 상속 기본 개념과 실전 예제

파이썬의 객체 지향 프로그래밍(OOP)에서 상속은 매우 중요한 개념입니다. 상속을 통해 코드 재사용성을 높이고, 계층 구조를 만들며, 기존 클래스를 확장하여 새로운 기능을 추가할 수 있습니다. 이번 글에서는 파이썬의 상속 개념과 함께 실전 예제를 통해 이해를 도울 것입니다.

 

 

 

1. 상속의 기본 개념

상속은 하나의 클래스가 다른 클래스의 속성과 메서드를 물려받는 것입니다. 부모 클래스(기본 클래스)와 자식 클래스(파생 클래스) 간의 관계가 형성됩니다. 이를 통해 기존 코드를 재사용하고, 새로운 기능을 추가하거나 변경할 수 있습니다.

 

 

2. 기본 상속 예제

기본적인 상속을 이해하기 위해 간단한 예제를 살펴보겠습니다.

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

dog = Dog("Buddy")
print(dog.speak())  # 출력: Buddy says Woof!

 

 

3. 메서드 오버라이딩

자식 클래스에서 부모 클래스의 메서드를 재정의하는 것을 메서드 오버라이딩이라고 합니다. 이를 통해 자식 클래스에서 고유한 동작을 정의할 수 있습니다.

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

cat = Cat("Kitty")
print(cat.speak())  # 출력: Kitty says Meow!

 

 

4. super() 함수 사용법

super() 함수는 부모 클래스의 메서드를 호출하는 데 사용됩니다. 이를 통해 자식 클래스에서 부모 클래스의 초기화 메서드나 다른 메서드를 사용할 수 있습니다.

class Bird(Animal):
    def __init__(self, name, can_fly):
        super().__init__(name)
        self.can_fly = can_fly

    def speak(self):
        return f"{self.name} says Tweet!"

bird = Bird("Tweety", True)
print(bird.speak())  # 출력: Tweety says Tweet!

 

 

 

 

5. 다중 상속

파이썬에서는 다중 상속을 지원합니다. 즉, 하나의 자식 클래스가 둘 이상의 부모 클래스로부터 상속받을 수 있습니다. 하지만 다중 상속은 복잡성을 증가시킬 수 있으므로 신중하게 사용해야 합니다.

class Flyer:
    def fly(self):
        return "Flying high!"

class Swimmer:
    def swim(self):
        return "Swimming deep!"

class Duck(Animal, Flyer, Swimmer):
    def speak(self):
        return f"{self.name} says Quack!"

duck = Duck("Daffy")
print(duck.speak())  # 출력: Daffy says Quack!
print(duck.fly())    # 출력: Flying high!
print(duck.swim())   # 출력: Swimming deep!

 

 

6. 실전 예제: 상속을 활용한 확장

상속을 활용하여 기존 클래스를 확장하고 새로운 기능을 추가하는 방법을 실전 예제로 살펴보겠습니다.

class Vehicle:
    def __init__(self, make, model):
        self.make = make
        self.model = model

    def start_engine(self):
        return "Engine started"

class Car(Vehicle):
    def __init__(self, make, model, doors):
        super().__init__(make, model)
        self.doors = doors

    def start_engine(self):
        return f"{self.make} {self.model} with {self.doors} doors: Engine started"

car = Car("Toyota", "Corolla", 4)
print(car.start_engine())  # 출력: Toyota Corolla with 4 doors: Engine started

 

 

7. 결론

상속은 객체 지향 프로그래밍에서 매우 강력한 도구입니다. 이를 통해 코드의 재사용성을 높이고, 계층 구조를 형성하여 유지보수를 쉽게 할 수 있습니다. 이번 가이드를 통해 파이썬의 상속 개념과 다양한 예제를 살펴보았습니다. 실제 프로젝트에서 상속을 효과적으로 활용해 보세요.