9.3.1 상속이란
9.2.3 메서드에서 유닛 중에서 공격할 수 없는 유닛도 있다고 했는데, 유닛들의 수송을 담당하는 수송선과 부상당한 유닛을 치료해 주는 의무병 등이 이에 해당합니다. 이런 유닛은 공격 명령이 포함된 AttackUnit 클래스로 생성할 수 없습니다. 그래서 처음에 만든 Unit 클래스를 수정해 보겠습니다.
damage 인스턴스 변수를 포함해 공격과 관련한 내용은 AttackUnit 클래스에 있으므로 Unit 클래스는 일반적인 유닛을 위한 클래스로 수정합니다. 모든 유닛은 이름과 체력 정보가 있어야 하므로 name, hp 인스턴스 변수는 남겨 두고 공격력인 damage 인스턴스 변수는 없앱니다. 또한, 코드를 간결하게 하기 위해 print() 문도 삭제하겠습니다.
class Unit:
def __init__(self, name, hp, damage): # 공격력인 damage 삭제
self.name = name
self.hp = hp
self.damage = damage # 삭제
print("{0} 유닛을 생성했습니다.".format(self.name)) # 삭제
print("체력 {0}, 공격력 {1}".format(self.hp, self.damage)) # 삭제
코드가 매우 가벼워졌습니다.
# 일반 유닛
class Unit:
def __init__(self, name, hp):
self.name = name
self.hp = hp