from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def sound(self):
pass
class Tiger(Animal):
pass
leon = Tiger() # Возникнет ошибка, потому что в классе Tiger нет реализации метода sound
Или можно вот так
class Animal:
def __init_subclass__(cls):
if not hasattr(cls, 'sound'):
raise ValueError(f"Класс {cls.__name__} должен реализовать метод 'sound'")
return super().__init__(cls)
class Tiger(Animal):
pass
leon = Tiger() # тут возникнет ошибка с нашим текстом
Галина РыжоваУченик (148)
1 месяц назад
пасибо! Только ошибка генерируется от родительского класса, а не при вызове, но это, вроде как, логично.
from math import pi
class Shape():
def __init_subclass__(cls):
if not hasattr(cls, 'calculate_area'):
raise ValueError(f"Класс {cls.__name__} должен реализовать метод 'calculate_area'")
return super().__init__(cls)
class Trapezoid(Shape):
pass
-----------------------------------------
ValueError Traceback (most recent call last)
*
*
ValueError: Класс Trapezoid должен реализовать метод 'calculate_area'
текст ошибки: “Метод method() должен быть определен в дочернем классе.”
Как реализовать производство данной ошибки, подскажите, пожалуйста!