상세 컨텐츠

본문 제목

파이썬 클래스와 상속: 실무에서 적용하는 통합 가이드

카테고리 없음

by jbmu6 2025. 3. 17. 20:02

본문

<>

파이썬 클래스 개념과 상속 실무 예제

파이썬은 객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 지원하는 강력한 프로그래밍 언어입니다. 객체 지향 프로그래밍의 중요한 요소 중 하나는 클래스와 상속입니다. 이 글에서는 파이썬의 클래스 개념과 상속의 기초를 설명하고, 실무에서의 예제를 통해 이해를 돕고자 합니다.

1. 클래스란?

클래스는 객체를 생성하기 위한 청사진(template)입니다. 객체는 클래스의 인스턴스(instance)이며, 클래스 내부에는 속성(attribute)과 메소드(method)가 포함됩니다.

  • 속성: 클래스에 정의된 변수로, 객체의 상태를 나타냅니다.
  • 메소드: 클래스에 정의된 함수로, 객체의 행동을 나타냅니다.

2. 클래스의 정의

파이썬에서 클래스를 정의하기 위해서는 class 키워드를 사용합니다. 기본적인 클래스의 구조는 다음과 같습니다.

class 클래스이름:
    def init(self, 속성1, 속성2):
        self.속성1 = 속성1
        self.속성2 = 속성2

    def 메소드이름(self):

메소드의 내용

3. 클래스 예제

아래는 간단한 자동차 클래스를 정의하는 예제입니다.

class Car:
    def init(self, brand, model):
        self.brand = brand
        self.model = model

    def display_info(self):
        print(f'브랜드: {self.brand}, 모델: {self.model}')

위의 예제에서 Car 클래스는 두 개의 속성(brand와 model)과 하나의 메소드(display_info)를 가지고 있습니다. 이 메소드는 자동차의 정보를 출력합니다.

4. 객체 생성하기

클래스로부터 객체를 생성하는 방법은 다음과 같습니다.

my_car = Car('현대', '아반떼')
mycar.displayinfo()

출력: 브랜드: 현대, 모델: 아반떼

5. 상속이란?

상속(Inheritance)은 새로운 클래스가 기존 클래스의 속성과 메소드를 물려받는 기능입니다. 이를 통해 코드의 재사용성을 높이고, 프로그램 구조를 보다 이해하기 쉽게 만듭니다.

6. 상속의 정의

상속을 사용하기 위해서는 부모 클래스와 자식 클래스를 정의해야 합니다. 자식 클래스는 부모 클래스를 상속받으며, super() 함수를 사용하여 부모 클래스의 메소드를 호출할 수 있습니다.

class 부모클래스:
    def init(self):

부모 클래스 초기화


class 자식클래스(부모클래스):
    def init(self):
        super().init()

자식 클래스 초기화

7. 상속 예제

자동차 클래스에서 전기 자동차 클래스를 상속 받아보겠습니다.

class ElectricCar(Car):
    def init(self, brand, model, battery_size):
        super().init(brand, model)
        self.batterysize = batterysize

    def display_info(self):
        super().display_info()
        print(f'배터리 크기: {self.battery_size}kWh')

ElectricCar 클래스는 Car 클래스를 상속받아 brand, model 외에 batterysize라는 새로운 속성을 추가하고, displayinfo 메소드를 오버라이드(재정의)합니다.

8. 객체 생성하기

전기 자동차 객체를 생성해봅시다.

myelectriccar = ElectricCar('테슬라', '모델 S', 100)
myelectriccar.display_info()

출력: 브랜드: 테슬라, 모델: 모델 S, 배터리 크기: 100kWh

9. 상속의 장점

  • 코드 재사용성: 기존 클래스를 기반으로 새로운 클래스를 쉽게 정의할 수 있어 시간과 노력을 절약할 수 있습니다.
  • 유지보수 용이성: 공통된 기능을 부모 클래스에 정의하면, 자식 클래스에서 중복되는 코드를 줄일 수 있어 유지보수가 어려워지지 않습니다.
  • 다형성: 같은 메소드 이름을 사용하더라도 각 클래스의 동작이 다르게 할 수 있는 기능을 제공합니다.

10. 다중 상속

파이썬은 다중 상속을 지원합니다. 즉, 하나의 자식 클래스가 여러 부모 클래스를 가질 수 있습니다. 이는 다음과 같이 정의할 수 있습니다.

class 부모클래스1:
    pass

class 부모클래스2:
    pass

class 자식클래스(부모클래스1, 부모클래스2):
    pass

하지만 다중 상속을 사용할 때는 서로 다른 부모 클래스에서 동일한 메소드를 정의하면 어떤 메소드를 호출할지 혼란스러울 수 있습니다. 이를 해결하기 위해 메소드 해석 순서(Method Resolution Order, MRO)를 따릅니다.

11. 예제: 도형에 대한 클래스 및 상속

이번에는 도형 클래스를 만들어보겠습니다. 기본 도형 클래스인 Shape와 이를 상속받은 Circle 클래스를 정의하겠습니다.

class Shape:
    def area(self):
        pass

면적을 계산하는 메소드


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

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

Circle 클래스는 Shape 클래스를 상속받고, area 메소드를 재정의하여 원의 면적을 계산합니다.

12. 공통 메소드와 오버라이드

부모 클래스에서 공통 메소드를 정의하고, 이를 자식 클래스에서 오버라이드(재정의)하여 구체적인 행동을 지정할 수 있습니다. 이를 통해 다양한 클래스가 같은 인터페이스를 가지고 동작하게 만들 수 있습니다.

class Rectangle(Shape):
    def init(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

13. 클래스와 객체의 관계

클래스는 객체의 설계도이며, 여러 개의 객체를 생성할 수 있습니다. 클래스는 속성과 메소드를 정의하고, 객체는 이러한 속성과 메소드를 실제로 사용하는 인스턴스입니다.

14. 마무리

이번 글에서는 파이썬에서 클래스와 상속의 개념에 대해 알아보았습니다. 클래스는 객체를 정의하기 위한 기본 구조이며, 상속은 코드의 재사용성을 높이는 중요한 기능입니다. 이러한 개념들을 이해하고 활용하면, 더욱 효과적으로 파이썬 프로그램을 작성할 수 있습니다.

앞으로도 이러한 객체 지향 프로그래밍의 원리를 잘 활용하여 복잡한 문제들을 해결해 나가기를 바랍니다.

</>