반응형
파이썬에서 클래스 상속은 객체 지향 프로그래밍의 중요한 개념으로, 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 속성과 메서드를 새 클래스(자식 클래스 또는 서브 클래스)에서 재사용하거나 확장할 수 있게 합니다. 상속을 통해 코드의 재사용성과 확장성을 높일 수 있습니다.
상속의 기본 개념
- 부모 클래스 (Super Class / Base Class): 다른 클래스가 상속받을 수 있는 기존 클래스입니다.
- 자식 클래스 (Sub Class / Derived Class): 부모 클래스를 상속받아 부모 클래스의 속성과 메서드를 물려받는 클래스입니다.
상속의 특징
- 속성과 메서드의 상속: 자식 클래스는 부모 클래스의 모든 속성과 메서드를 자동으로 상속받습니다.
- 메서드 오버라이딩 (Method Overriding): 자식 클래스에서 부모 클래스의 메서드를 재정의할 수 있습니다.
super()
함수: 부모 클래스의 메서드나 속성에 접근하기 위해 사용됩니다.
예제 코드
다음은 상속의 기본 개념을 보여주는 예제 코드입니다.
# 부모 클래스 정의
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name} makes a sound"
# 자식 클래스 정의
class Dog(Animal):
def __init__(self, name, breed):
# 부모 클래스의 생성자를 호출
super().__init__(name)
self.breed = breed
# 부모 클래스의 메서드를 오버라이딩
def speak(self):
return f"{self.name} barks"
# 또 다른 자식 클래스 정의
class Cat(Animal):
def speak(self):
return f"{self.name} meows"
# 객체 생성 및 메서드 호출
dog = Dog("Buddy", "Golden Retriever")
cat = Cat("Whiskers")
print(dog.speak()) # 출력: Buddy barks
print(cat.speak()) # 출력: Whiskers meows
설명
- Animal 클래스 (부모 클래스):
Animal
클래스는name
이라는 속성을 초기화하고,speak
라는 메서드를 가집니다.- 이 클래스는 다른 클래스들이 상속받을 수 있는 부모 클래스입니다.
- Dog 클래스 (자식 클래스):
Dog
클래스는Animal
클래스를 상속받습니다.__init__
메서드에서super().__init__(name)
을 호출하여 부모 클래스의 생성자를 호출하고, 부모 클래스의 초기화 과정을 수행합니다.speak
메서드를 오버라이딩하여 개가 짖는 소리를 표현합니다.
- Cat 클래스 (자식 클래스):
Cat
클래스도Animal
클래스를 상속받습니다.speak
메서드를 오버라이딩하여 고양이가 우는 소리를 표현합니다.
- 객체 생성 및 사용:
Dog
클래스와Cat
클래스의 인스턴스를 생성하고, 각각의speak
메서드를 호출합니다.- 오버라이딩된
speak
메서드가 호출되어 각기 다른 출력 결과를 보여줍니다.
추가 개념: 다중 상속 (Multiple Inheritance)
파이썬에서는 하나의 자식 클래스가 여러 부모 클래스를 상속받을 수도 있습니다. 이를 다중 상속이라고 합니다. 다중 상속 시에는 메서드 해석 순서(MRO: Method Resolution Order)가 중요합니다.
class Animal:
def speak(self):
return "Animal sound"
class Canine:
def speak(self):
return "Canine sound"
class Dog(Animal, Canine):
pass
dog = Dog()
print(dog.speak()) # 출력: Animal sound (MRO에 의해 Animal의 speak가 호출됨)
여기서 Dog
클래스는 Animal
과 Canine
을 모두 상속받았지만, Animal
클래스의 speak
메서드가 먼저 호출됩니다. 이는 MRO에 따라 결정됩니다.
요약
- 클래스 상속은 코드 재사용과 확장을 가능하게 합니다.
- 자식 클래스는 부모 클래스의 속성과 메서드를 상속받아 사용할 수 있으며, 필요에 따라 메서드를 오버라이딩할 수 있습니다.
super()
함수는 부모 클래스의 메서드나 속성에 접근할 때 사용됩니다.- 파이썬에서는 다중 상속도 가능하며, 이는 메서드 해석 순서에 의해 결정됩니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 큰 수 계산에 Decimal 객체 사용하기 (0) | 2024.08.25 |
---|---|
[ Python ] 정확하고 오차없는 10진수 연산 - Decimal 클래스 (0) | 2024.08.21 |
[ Python ] 클래스 내에서 멤버 변수 선언하기 (지역/전역) (0) | 2024.08.13 |
[ Python ] Class 의 method ( 멤버 함수) 정의하기 (0) | 2024.08.13 |
[ Python ] 클래스의 선행 참조 문제 분서과 해결 방법 (0) | 2024.08.13 |