본문 바로가기

Python

[Python/파이썬] 상속(Inheritance), 다중상속(Multiple Inheritance)

반응형

 

 

 

 

토글

 

 

 

 

상속(Inheritance)

상속은 기존 클래스(부모 클래스)의 속성과 메소드를 새로운 클래스(자식 클래스)에게 전달하는 프로세스이다.

이러한 방식으로 코드를 재사용하고 관계를 구축할 수 있다.


1. 코드 재사용(Reusability)

: 상속을 통해 부모 클래스의 코드를 자식 클래스에서 재사용한다. 이런 특성 덕분에 중복된 코드 작성을 최소화함으로써 프로그램의 크기와 복잡성을 줄일 수 있다.


2. 모듈화(Modularity)

: 부모 클래스와 자식 클래스는 서로 독립적으로 작성, 수정 및 테스트될 수 있다. 이를 통해 코드의 유지보수가 간편해진다.


3. 계층적 구조(Hierarchical Structure)

: 관련된 클래스들은 계층적 구조로 구성될 수 있다. 그 결과 상위 클래스에는 일반적인 기능들이 모여 있으며 하위 클래스별로 기능을 확장해갈 수 있다.

 

# 일반 유닛 클래스
class Unit:
    def __init__(self, name, hp):
        self.name = name
        self.hp = hp

# 공격 유닛 클래스, 일반 유닛 클래스를 상속받음
class AttackUnit(Unit):
    def __init__(self, name, hp, damage):
        Unit.__init__(self, name, hp)
        self.damage = damage

 

위의 코드에서 공격 유닛 클래스 AttackUnit은 일반 유닛 클래스 Unit을 상속받아 정의되었다.

이를 통해 AttackUnit 입장에서 Unit의 모든 속성과 메소드에 자유롭게 접근 가능하다.

반응형

 


 

다중상속(Multiple Inheritance)

다중상속은 한 클래스가 두 개 이상의 부모 클래스로부터 속성과 메소드를 동시에 상속받는 것을 뜻한다. 


1. 다양한 조합의 클래스 생성

: 다중상속을 통해 여러 부모 클래스들의 특징을 합하여 새로운 클래스를 생성할 수 있다.


2. 코드의 간결성

: 다중상속을 사용하여 복잡한 기능도 여러 부모 클래스로 분할함으로써 코드의 가독성과 이해도를 높일 수 있다.

 

# 날 수 있는 기능을 가진 클래스
class Flyable:
    def __init__(self, flying_speed):
        self.flying_speed = flying_speed

    def fly(self, name, location):
        print(
            "{0} : {1} 방향으로 날아갑니다. [속도 {2}]".format(name, location, self.flying_speed)
        )

# 공중 공격 유닛 클래스, 공격 유닛 클래스와 날 수 있는 기능 클래스를 다중상속
class FlyableAttackUnit(AttackUnit, Flyable):
    def __init__(self, name, hp, damage, flying_speed):
        AttackUnit.__init__(self, name, hp, damage)
        Flyable.__init__(self, flying_speed)

 

위의 코드에서는 공중 공격 유닛 클래스 FlyableAttackUnit이 AttackUnit과 Flyable 클래스를

동시에 상속함으로써 다중상속을 구현한다.

이를 통해 FlyableAttackUnit은 두 부모 클래스의 속성과 메소드를 모두 갖게 된다. 

 

 

 

 

반응형