История изменений
Исправление FishHook, (текущая версия) :
Вы сделали инициализатор абстрактным, чтобы гарантировать, что в подклассах устанавливается значение health_points
? Но ведь это никак не гарантируется, ибо что мне помешает сделать вот так?
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.fuckit: int = 100
если вы хотите решение в виде более-менее классического ООП, то это будет выглядеть как-то так
class Creature(abc.ABC):
@property
def health_points(self):
return self.get_health_points()
@abc.abstractmethod
def get_health_points(self):
pass
Исходная версия FishHook, :
Вы сделали инициализатор абстрактным, чтобы гарантировать, что в подклассах устанавливается значение health_points
? Но ведь это никак не гарантируется, ибо что мне помешает сделать вот так?
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.fuckit: int = 100
если вы хотите решение в виде более-менее классического ООП, то это будет выглядеть как-то так
class Creature(abc.ABC):
health_points: int
@property
def health_points(self):
return self.get_health_points()
@abc.abstractmethod
def get_health_points(self):
pass