더북(TheBook)

이번에는 AttackUnit 클래스도 살펴볼까요? __init__() 생성자 부분만 보면 Unit 클래스와 겹치는 부분이 있네요.

# 공격 유닛
class AttackUnit:
    def __init__(self, name, hp, damage):
        self.name = name # 공통 부분
        self.hp = hp # 공통 부분
        self.damage = damage
    (생략)

일반 유닛도 name, hp 인스턴스 변수가 있고 공격 유닛에도 name, hp 인스턴스 변수가 있습니다. 만약 유닛의 특성에 따라 공격 유닛, 공중 유닛, 지상 유닛 등으로 확장된다면 클래스마다 name, hp 인스턴스 변수를 일일이 넣어야겠죠.

다행히 파이썬에는 앞에서 말한 상속이라는 개념이 있어서 클래스에 공통되는 부분을 중복으로 작성하지 않고 재사용할 수 있습니다. AttackUnit 클래스는 Unit 클래스의 name, hp 인스턴스 변수를 포함하면서 추가로 damage 인스턴스 변수를 정의하고 있으므로 Unit 클래스로부터 상속받으면 Unit 클래스의 name, hp 인스턴스 변수를 정의하지 않아도 그대로 사용할 수 있습니다. 이것이 파이썬에서 상속의 의미입니다.

다른 클래스로부터 상속받을 때는 클래스명 뒤에 소괄호를 적고 상속받을 클래스명을 명시하면 됩니다. 이때 두 클래스는 실생활에서 자식이 부모로부터 상속받는 관계와 비슷해서 자식 클래스부모 클래스라고 표현합니다.

형식

class 자식 클래스(부모 클래스):
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.