본문 바로가기

Python에서 상속 사용하는 방법과 예제

by Kstyle83 2023. 3. 18.
반응형

Python은 객체 지향 프로그래밍(OOP)을 지원하는 언어로, 상속(inheritance)이라는 개념을 사용할 수 있습니다. 상속은 이미 존재하는 클래스를 확장하여 새로운 클래스를 만드는 것입니다. 이를 통해 코드 재사용성과 구조적인 효율성을 높일 수 있습니다. 이번 글에서는 Python에서 상속 사용하는 방법과 예제를 살펴보겠습니다.

상속의 개념

상속은 이미 존재하는 클래스의 모든 속성과 메서드를 새로운 클래스에서 사용할 수 있도록 하는 방법입니다. 이를 통해 코드 재사용성과 구조적인 효율성을 높일 수 있습니다.

예를 들어, 자동차 클래스를 만들 때, 모든 자동차에 공통적으로 존재하는 속성과 메서드를 일일이 작성하는 것은 비효율적입니다. 대신, 자동차 클래스를 상속받아서 스포츠카 클래스, SUV 클래스, 트럭 클래스 등을 만들 수 있습니다. 이러한 하위 클래스들은 상위 클래스의 속성과 메서드를 모두 상속받아서 사용할 수 있으며, 필요한 경우 하위 클래스에서 새로운 속성과 메서드를 추가할 수도 있습니다.

상속 사용 예제

다음은 Python에서 상속을 사용하는 간단한 예제 코드입니다.

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

    def print_info(self):
        print(f"{self.year} {self.make} {self.model}")

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

    def print_info(self):
        super().print_info()
        print(f"Number of doors: {self.num_doors}")

my_car = Car("Toyota", "Camry", 2021, 4)
my_car.print_info()

위 코드에서는 Vehicle 클래스를 정의하고, Car 클래스를 Vehicle 클래스를 상속받아서 정의합니다. Vehicle 클래스는 make, model, year 속성과 print_info 메서드를 가지고 있습니다. Car 클래스는 num_doors 속성을 추가로 가지고 있습니다. Car 클래스에서 print_info 메서드를 다시 정의해서 Vehicle 클래스의 print_info 메서드를 호출하고, num_doors 속성도 출력하도록 하였습니다.

이제 my_car 객체를 생성하고, print_info 메서드를 호출하면 다음과 같은 결과가 출력됩니다.

2021 Toyota Camry
Number of doors: 4

super() 함수 사용

위 예제에서 super() 함수를 사용하여 부모 클래스의 속성과 메서드를 호출하였습니다. super() 함수는 현재 클래스의 부모 클래스를 참조하는 객체를 반환합니다. 이를 통해 부모 클래스의 메서드를 호출하거나 속성에 접근할 수 있습니다.

 

Python에서 상속을 사용하면 코드 재사용성과 구조적인 효율성을 높일 수 있습니다. 상속을 사용하면 이미 존재하는 클래스를 확장하여 새로운 클래스를 만들 수 있으며, 이를 통해 필요한 경우에만 새로운 속성과 메서드를 추가할 수 있습니다. super() 함수를 사용하여 부모 클래스의 속성과 메서드를 호출할 수 있습니다.

반응형

'' 카테고리의 다른 글

익명함수 뜻  (0) 2023.03.18
Python Lambda 사용법  (0) 2023.03.18
싱글 스레드 vs 멀티 스레드  (0) 2023.03.18
Javascript에서 var, let, const의 차이점  (0) 2023.03.18
네트워크 프로토콜: TCP/IP  (0) 2023.03.18