Код Middle ООП и dataclasses обновлено

Полиморфизм: площадь фигур

Условие

Реализуйте базовый класс Shape с методом area(), бросающим NotImplementedError, и наследников Rect(w, h), Circle(r) (площадь округлить до 2 знаков, math.pi), Square(side) как наследник Rect. Проверка run(specs) строит фигуры из ["rect", w, h], ["circle", r], ["square", a], ["shape"] и возвращает площади или "NotImplementedError", а также последним элементом сумму площадей (без нереализованных), округлённую до 2 знаков.

Примеры

run([["rect", 2, 3]]) // [6, 6]
run([["circle", 1]]) // [3.14, 3.14]
run([["square", 4]]) // [16, 16]

Как подойти

Подсказки: 1
  1. Square.__init__ вызывает super().__init__(side, side).

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме