더북(TheBook)

9.3.2 다중 상속

공중 유닛에는 전투기와 같이 공격이 가능한 유닛과 보병, 탱크 등 지상 유닛을 다른 위치로 수송하면서 공격력은 없는 수송선 같은 유닛이 있습니다.

공중 유닛은 날 수 있는데, 이 기능은 지상 유닛에는 적용될 수 없습니다. 따라서 비행 기능을 정의하는 클래스를 별도로 만들겠습니다. 클래스명은 Flyable이라고 하고 __init__() 생성자에는 비행할 때 속도를 의미하는 flying_speed를 인스턴스 변수로 넣겠습니다. 공중 유닛은 무게나 크기, 종류, 비행 속도 업그레이드 여부에 따라 비행 속도가 달라집니다. 비행 동작은 fly() 메서드로 정의합니다. Flyable 클래스는 비행 기능만 제공하므로 어떤 유닛인지에 대한 정보는 포함하지 않겠습니다. 그 대신 fly() 메서드를 호출할 때 유닛의 이름과 비행 방향 정보를 전달받습니다.

# 비행 기능
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))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.