더북(TheBook)

9.3.3 메서드 오버라이딩

게임에서 유닛들은 플레이어가 지정한 위치나 방향으로 이동합니다. 그런데 유닛마다 이동 속도가 다릅니다. 빠른 유닛도 있고 느린 유닛도 있죠. 9.3.2 다중 상속에서 공중 유닛을 위한 Flyable 클래스에 비행 속도를 의미하는 flying_speed를 이미 정의했습니다. 그래서 이번에는 지상 유닛의 이동 속도를 의미하는 speed 인스턴스 변수를 Unit 클래스에 추가해 보겠습니다. 그리고 이동 동작을 나타내는 move() 메서드를 정의하고 공중 유닛과 구분하는 문구를 추가해서 어떤 유닛이 몇 시 방향으로 이동하는지를 출력하겠습니다.

# 일반 유닛
class Unit:
    def __init__(self, name, hp, speed): # speed 추가
        self.name = name
        self.hp = hp
        self.speed = speed # 지상 이동 속도

 

    def move(self, location): # 이동 동작 정의
        print("[지상 유닛 이동]")
        print("{0} : {1} 방향으로 이동합니다. [속도 {2}]" \
            .format(self.name, location, self.speed))

Unit 클래스를 변경하고 나면 Unit 클래스를 상속받는 자식 클래스에 영향을 끼치게 됩니다. speed 인스턴스 변수를 새로 추가했으니 __init__() 생성자를 사용하는 부분은 변경해 줘야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.