почему ошибка в 78-ой строчке кода?
(хотя по логике в строках 74-77 тоже должны быть ошибки ведь это объекты не класса Soldier а класса Infantry и Cavalry) from abc import ABC, abstractmethod
class Soldier(ABC):
@staticmethod
def validatesoldier(obj):
if not isinstance(obj, Soldier):
raise TypeError('Объектом должен быть Soldier')
@abstractmethod
def move(self):
pass
@abstractmethod
def attack(self):
pass
@abstractmethod
def defend(self):
pass
class Infantry(Soldier):
def move(self):
print('Пехота передвигается в пешем порядке')
def attack(self):
print('Пехота участвует в ближнем бою')
def defend(self):
print('Пехота держит строй')
class Cavalry(Soldier):
def move(self):
print('Кавалерия передвигается верхом')
def attack(self):
print('Кавалерия переходит в атаку')
def defend(self):
print('Кавалерия защищает фланги')
class Army():
soldats = []
def add_soldier(self, soldier):
Soldier.validatesoldier(soldier)
Army.soldats.append(soldier)
def attack(self):
for soldat in Army.soldats:
soldat.move()
soldat.attack()
def defend(self):
for soldat in Army.soldats:
soldat.move()
soldat.defend()
class Pilot():
def move(self):
print('Пилоты передвигается верхом')
def attack(self):
print('Пилоты переходит в атаку')
def defend(self):
print('Пилоты отступают')
army = Army()
army.add_soldier(Infantry()) # тут нет ошибки
army.add_soldier(Cavalry()) # тут нет ошибки
army.add_soldier(Infantry()) # тут нет ошибки
army.add_soldier(Cavalry()) # тут нет ошибки
# army.add_soldier(Pilot()) почему тут ошибка?
army.attack()
army.defend()
(хотя по логике в строках 74-77 тоже должны быть ошибки ведь это объекты не класса Soldier а класса Infantry и Cavalry) from abc import ABC, abstractmethod
class Soldier(ABC):
@staticmethod
def validatesoldier(obj):
if not isinstance(obj, Soldier):
raise TypeError('Объектом должен быть Soldier')
@abstractmethod
def move(self):
pass
@abstractmethod
def attack(self):
pass
@abstractmethod
def defend(self):
pass
class Infantry(Soldier):
def move(self):
print('Пехота передвигается в пешем порядке')
def attack(self):
print('Пехота участвует в ближнем бою')
def defend(self):
print('Пехота держит строй')
class Cavalry(Soldier):
def move(self):
print('Кавалерия передвигается верхом')
def attack(self):
print('Кавалерия переходит в атаку')
def defend(self):
print('Кавалерия защищает фланги')
class Army():
soldats = []
def add_soldier(self, soldier):
Soldier.validatesoldier(soldier)
Army.soldats.append(soldier)
def attack(self):
for soldat in Army.soldats:
soldat.move()
soldat.attack()
def defend(self):
for soldat in Army.soldats:
soldat.move()
soldat.defend()
class Pilot():
def move(self):
print('Пилоты передвигается верхом')
def attack(self):
print('Пилоты переходит в атаку')
def defend(self):
print('Пилоты отступают')
army = Army()
army.add_soldier(Infantry()) # тут нет ошибки
army.add_soldier(Cavalry()) # тут нет ошибки
army.add_soldier(Infantry()) # тут нет ошибки
army.add_soldier(Cavalry()) # тут нет ошибки
# army.add_soldier(Pilot()) почему тут ошибка?
army.attack()
army.defend()