코드 7-13 oop2/oop2_3/character.py ②
class Player(Character): def _ _init__(self, name = 'player', hp = 100, power = 10, *attack_kinds): super().__init__(name, hp, power) # 추가된 인스턴스 멤버 self.skills = [ ] for attack_kind in attack_kinds: self.skills.append(attack_kind) # 재정의된 attack( ) 메서드 # 반드시 재정의되어야 한다 def attack(self, other, attack_kind): if attack_kind in self.skills: other.get_damage(self.power, attack_kind) # 재정의된 get_damage( ) 메서드 # 반드시 재정의되어야 한다 def get_damage(self, power, attack_kind): ''' 만약 공격 종류가 플레이어의 기술 중 하나라면 피해가 절반으로 감소한다 ''' if attack_kind in self.skills: self.HP -= (power//2) else: self.HP -= power
현재까지 만든 클래스 디자인을 그림으로 표현하면 그림 7-4와 같습니다.
그림 7-4 character 클래스 디자인 ①