Python. Подклассы
Задача «Игровой мир».
Дано:
Теперь нужно населить игровой мир различными существами. Ваш гейм-дизайнер придумал сложную разветвленную иерархию существ.
Во-первых, все существа делятся на земных, морских и воздушных. Среди земных существ выделяются тролли и эльфы, среди морских — русалки и сирены, среди воздушных — драконы и пегасы.
Создайте базовый класс Creature, а также его наследников:
-
EarthCreature (с подклассами Troll и Elf),
-
SeaCreature (с подклассами Mermaid и Siren),
-
AirCreature (с подклассами Dragon и Pegasus).
Никаких методов пока реализовывать не нужно, но каждый класс должен содержать атрибут health_points в соответствии с таблицей.
Класс | Значение атрибута health_points |
---|---|
Troll | 100 |
Elf | 80 |
Mermaid | 60 |
Siren | 75 |
Dragon | 120 |
Pegasus | 85 |
Пример работы программы:
x = Elf()
isinstance(x, EarthCreature) ⇒ True
isinstance(x, Creature) ⇒ True
x.health_points ⇒ 80
Я наваял вот такое:
import abc
class Creature(abc.ABC):
health_points: int
@abc.abstractmethod
def __init__(self):
pass
class EarthCreature(Creature):
pass
class Troll(EarthCreature):
def __init__(self) -> None:
self.health_points: int = 100
class Elf(EarthCreature):
def __init__(self) -> None:
self.health_points: int = 80
class SeaCreature(Creature):
pass
class Mermaid(SeaCreature):
def __init__(self) -> None:
self.health_points: int = 60
class Siren(SeaCreature):
def __init__(self) -> None:
self.health_points: int = 75
class AirCreature(Creature):
pass
class Dragon(AirCreature):
def __init__(self) -> None:
self.health_points: int = 120
class Pegasus(AirCreature):
def __init__(self) -> None:
self.health_points: int = 85
Но данный код проваливает автоматическую проверку. Вываливается
Ваш код не прошел один или несколько скрытых тестов. Ваш код должен пройти все тесты, чтобы получить какие-либо оценки. Попробуй еще раз.
Прошу знатоков ООП в Python подбросить мне какие-либо умные мысли.