1. Flyable 클래스에 이름정보가 따로 저장이 안 되었다는 말이 무슨 의미인가요? Flyalbe의 __init__ 메소드에 name 파라미터를 넣어준다면 fly 메소드의 name 파라미터는 안 넣어도 됐을 거라는 뜻인가요?
class Flyable:
def __init__(self, name, flying_speed):
self.flying_speed = flying_speed
def fly(self, location):
print (f"{self.name} : {location} 방향으로 날아갑니다. [속도 {self.flying_speed}]")
class FlyableAttackUnit(AttackUnit, Flyable):
def __init__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, 0, damage) # 지상 speed = 0
Flyable.__init__(self, name, flying_speed)
def move(self, location):
print ("[공중유닛 이동]")
self.fly(location)
battlecruiser = FlyableAttackUnit("배틀크루저", 500, 25, 3)
battlecruiser1 = FlyableAttackUnit("배틀크루저", 500, 25, 3)
battlecruiser1.fly ("1시")
battlecruiser.move("9시")
한 번 수정해봤는데 큰 문제 없을까요? 이러면 배틀크루저.name은 AttackUnit과 Flyable 양쪽 2개가 생성되는 건가요?
2. 메소드 오버라이딩은 상속받은 클래스에 존재하는 같은 이름의 메소드를 대체하게 되는 건가요? 그렇다면 기존의 Unit의 move 메소드는 덮어씌우져서 쓸 수 없게 되는건가요?