Задача Задача №1741522
А
А
Давайте создадим классы Figure, Square и Rectangle, следуя вашим требованиям. Вот подробная реализация:
class Figure:
unit = "cm" # Уровень класса, единица измерения
def __init__(self):
pass
def calculate_area(self):
raise NotImplementedError("Метод calculate_area не реализован")
def info(self):
raise NotImplementedError("Метод info не реализован")
class Square(Figure):
def __init__(self, side_length):
super().__init__() # Вызов конструктора родительского класса
self.__side_length = side_length # Приватный атрибут
def calculate_area(self):
return self.__side_length ** 2 # Площадь квадрата
def info(self):
area = self.calculate_area()
print(f"Square side length: {self.__side_length}{Figure.unit}, area: {area}{Figure.unit}")
class Rectangle(Figure):
def __init__(self, length, width):
super().__init__() # Вызов конструктора родительского класса
self.__length = length # Приватный атрибут длины
self.__width = width # Приватный атрибут ширины
def calculate_area(self):
return self.__length * self.__width # Площадь прямоугольника
def info(self):
area = self.calculate_area()
print(f"Rectangle length: {self.__length}{Figure.unit}, width: {self.__width}{Figure.unit}, area: {area}{Figure.unit}")
# Исполняемая область модуля
if __name__ == "__main__":
squares = [Square(5), Square(10)] # Список из 2-х квадратов
rectangles = [Rectangle(5, 8), Rectangle(3, 4), Rectangle(6, 2)] # Список из 3-х прямоугольников
# Вызываем метод info для всех объектов списка
for square in squares:
square.info()
for rectangle in rectangles:
rectangle.info()
Пояснение к коду:
Класс
Figure:- Определен как базовый класс с атрибутом
unit, который указывает единицу измерения (в данном случае сантиметры). - Методы
calculate_areaиinfoне реализованы и выбрасывают исключениеNotImplementedError, указывающее на то, что они должны быть переопределены в дочерних классах.
- Определен как базовый класс с атрибутом
Класс
Square:- Наследует от
Figure. - Приватный атрибут
__side_lengthпредставляет длину стороны квадрата. - Переопределенные методы
calculate_areaиinfoопределяют, как считать площадь и выводить информацию о квадрате.
- Наследует от
Класс
Rectangle:- Также наследует от
Figure. - Приватные атрибуты
__lengthи__widthпредставляют длину и ширину прямоугольника. - Переопределенные методы
calculate_areaиinfoработают аналогично методу в классеSquare.
- Также наследует от
Исполняемая область создаёт и управляет экземплярами
SquareиRectangle, а затем выводит информацию о них с помощью методаinfo.
Этот код полностью соответствует вашим требованиям и будет правильно выполнять поставленные задачи.
