Код Senior ООП и dataclasses обновлено
Дескриптор с проверкой значения
Условие
Реализуйте дескриптор Positive: при присваивании проверяет, что значение число больше нуля (не bool), иначе бросает ValueError; хранит значение в экземпляре под своим именем (используйте __set_name__). Проверка run(values) создаёт Product с полями price = Positive() и qty = Positive() и пробует присвоить пары значений; возвращает для каждой пары [price, qty] или "ValueError".
Примеры
run([[10, 2]]) // [[10, 2]]
run([[0, 1]]) // ["ValueError"]
run([[5, -1]]) // ["ValueError"]
Как подойти
Подсказки: 2
__set_name__(self, owner, name)вызывается при создании класса.- Храните значение под другим именем, например с подчёркиванием.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.