Задача курса

Аннотации типов Python: исправьте класс OrderLine

Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Аннотации функций, методов и атрибутов классов; запуск mypy»

Условие

Исправь аннотации в классе OrderLine

Что уже дано

В редакторе находится класс OrderLine с намеренно сломанными аннотациями атрибутов и методов. Проверяющая система не передаёт никаких данных заранее — весь код находится прямо в редакторе.

Класс должен моделировать строку заказа: товар с названием, ценой за единицу и количеством.

Что нужно сделать

Исправьте только аннотации (не меняйте логику), чтобы они точно соответствовали реальному поведению кода:

  • атрибут name хранит название товара — строку;
  • атрибут unit_price хранит цену за единицу — число с плавающей точкой;
  • атрибут quantity хранит количество единиц — целое число;
  • метод total() возвращает сумму unit_price * quantity — число с плавающей точкой;
  • метод describe() возвращает строку вида "<name> x<quantity> @ <unit_price>";
  • метод apply_discount(percent) принимает процент скидки как число с плавающей точкой и ничего не возвращает, а уменьшает unit_price на соответствующий процент.

В коде есть ровно семь неверных аннотаций — найдите и исправьте каждую.

Ввод и вывод

stdin не используется. Печатать через print в stdout ничего не нужно.

Проверяющая система после вашего кода создаёт экземпляры OrderLine, вызывает методы и получает вычисленные аннотации класса через typing.get_type_hints(), чтобы убедиться, что аннотации соответствуют реальным типам значений.

Пример использования

line = OrderLine("Кабель", 100.0, 2)
print(line.describe())
print(line.total())
line.apply_discount(10)
print(line.total())

Результат:

Кабель x2 @ 100.0
200.0
180.0

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется