Задача курса
Аннотации типов 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
