Абстрактный класс

Контекст

Вы работаете в компании, занимающейся разработкой программного обеспечения для архитектурных проектов. Вам необходимо разработать программу для расчёта площади различных геометрических фигур, таких как круги, прямоугольники и треугольники.

Задача

Создайте:

  • класс Shape, который будет базовым классом для всех фигур и будет хранить пустой метод area, который наследники должны переопределить;
  • класс Circle;
  • класс Rectangle;
  • класс Triangle.

Классы Circle, Rectangle и Triangle наследуют от класса Shape и реализуют метод для вычисления площади фигуры.

Дополнительно: изучите информацию о работе с абстрактными классами. https://docs-python.ru/tutorial/klassy-jazyke-python/abstraktnye-klassy/

На основе этой информации сделайте так, чтобы:

  1. Нельзя было создавать объекты класса Shape.
  2. Наследники класса Shape переопределяли его метод area, чтобы объекты этих классов можно было использовать.
from abc import ABC, abstractmethod

class Shape(ABC):

    @abstractmethod
    def area(self):
        pass

class Circle(Shape):

    def __init__(self, radius):
        self.radius = radius

    def area(self):
        super().area()
        s = round(3.15 * (self.radius ** 2), 1)
        return s


class Rectangle(Shape):

    def __init__(self, a, b):
        self.a = a
        self.b = b

    def area(self):
        super().area()
        s = round(self.a * self.b, 1)
        return s

class Triangle(Shape):

    def __init__(self, a, h):
        self.a = a
        self.h = h

    def area(self):
        super().area()
        s = round((self.a * self.h) / 2, 1)
        return s


# Примеры работы с классом:
# Создание экземпляров классов
circle = Circle(5)
rectangle = Rectangle(4, 6)
triangle = Triangle(3, 8)

# Вычисление площади фигур
circle_area = circle.area()
rectangle_area = rectangle.area()
triangle_area = triangle.area()

# Вывод результатов
print("Площадь круга:", circle_area)
print("Площадь прямоугольника:", rectangle_area)
print("Площадь треугольника:", triangle_area)