Python/포스팅

파이썬 클래스 상속

짜집퍼박사(짜박) 2023. 12. 3. 03:06

파이썬에서 클래스 상속은 한 클래스가 다른 클래스의 특성과 동작을 상속받아 사용하는 개념입니다. 상속을 통해 코드 재사용성을 높일 수 있고, 새로운 클래스를 정의할 때 기존 클래스의 기능을 확장하거나 수정할 수 있습니다. 여기에서는 파이썬에서의 클래스 상속에 대한 주요 개념을 살펴보겠습니다.

 

기본적인 상속

클래스 상속은 새로운 클래스를 정의할 때 괄호 안에 기존 클래스의 이름을 넣어서 표현합니다. 새로운 클래스는 기존 클래스의 특성과 동작을 상속받습니다.

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

    def greet(self):
        print(f"Hello, {self.name}!")

# ParentClass를 상속받은 ChildClass 정의
class ChildClass(ParentClass):
    def __init__(self, name, age):
        # 부모 클래스의 생성자 호출
        super().__init__(name)
        self.age = age

    def show_info(self):
        print(f"{self.name} is {self.age} years old.")

# ChildClass의 객체 생성
child = ChildClass("Alice", 25)

# 부모 클래스의 메서드 호출
child.greet()       # 출력: Hello, Alice!

# 자식 클래스의 메서드 호출
child.show_info()   # 출력: Alice is 25 years old.

 

super() 함수

super() 함수를 사용하여 부모 클래스의 메서드나 속성에 접근할 수 있습니다. 부모 클래스의 생성자를 호출하는 데 주로 사용됩니다.

 

메서드 오버라이딩

자식 클래스에서 부모 클래스와 동일한 이름을 가진 메서드를 정의하면, 자식 클래스의 메서드가 부모 클래스의 메서드를 덮어쓰게 됩니다. 이를 메서드 오버라이딩이라고 합니다.

class Animal:
    def make_sound(self):
        print("Some generic sound")

class Dog(Animal):
    def make_sound(self):
        print("Bark! Bark!")

# Dog 클래스의 객체 생성
dog = Dog()

# 자식 클래스의 메서드 호출
dog.make_sound()  # 출력: Bark! Bark!

 

다중 상속

파이썬은 다중 상속을 지원합니다. 다중 상속은 여러 부모 클래스로부터 상속을 받는 것을 의미합니다.

class A:
    def show(self):
        print("Class A")

class B:
    def show(self):
        print("Class B")

class C(A, B):
    pass

# C 클래스의 객체 생성
c = C()

# 다중 상속 시 우선순위는 클래스 정의 순서에 따름
c.show()  # 출력: Class A

 

추상 클래스와 추상 메서드

추상 클래스는 추상 메서드를 포함하고 있으며, 추상 메서드는 하위 클래스에서 반드시 구현되어야 하는 메서드입니다.

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def area(self):
        return 3.14 * self.radius ** 2

# Circle 클래스의 객체 생성
circle = Circle(5)

# 추상 메서드 구현
print(circle.area())  # 출력: 78.5

상속은 객체 지향 프로그래밍에서 코드를 구조화하고 재사용성을 높이는 중요한 메커니즘 중 하나입니다. 클래스 상속을 통해 기존 클래스의 특성을 확장하거나 수정함으로써 코드를 보다 유연하게 관리할 수 있습니다.

 

With ChatGPT

'Python > 포스팅' 카테고리의 다른 글

파이썬 클래스 변수  (0) 2023.12.03
파이썬 메서드 오버라이딩  (0) 2023.12.03
파이썬 생성자  (0) 2023.12.03
파이썬 객체  (0) 2023.12.03
파이썬 클래스  (0) 2023.12.03