Задача курса
Инкапсуляция и property в Python: исправьте класс температуры
Курс «Python для продвинутых: ООП, типизация и тестирование» · урок «Инкапсуляция: соглашения, name mangling, property и защита инвариантов»
Условие
Исправь класс с температурой
Что уже дано
В редакторе уже находится класс Temperature с готовым getter свойства celsius, но конструктор обходит проверку, а setter и метод set_celsius не дописаны. Это код, который нужно исправить на месте; проверяющая система не передаёт готовый объект до запуска решения.
Что нужно сделать
Исправьте класс так, чтобы:
- температура хранилась только во внутреннем атрибуте
_celsius; - конструктор
__init__устанавливал значение через публичное свойствоcelsius; - setter
celsiusпринимал значение не ниже-273.15, а для меньшего значения поднималValueErrorдо изменения состояния объекта; set_celsius(value)использовал тот же setter, а не записывал_celsiusнапрямую.
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно. После кода ученика скрытые тесты создают Temperature(celsius), читают и присваивают obj.celsius и вызывают obj.set_celsius(value).
Пример использования
temperature = Temperature(20)
temperature.set_celsius(-5)
print(temperature.celsius)
try:
temperature.celsius = -300
except ValueError:
print("недопустимая температура")
Результат:
-5 недопустимая температура
Попробуйте решить
РешениеPython
Без регистрации · результат не сохраняется
