Инкапсуляция и property в Python: исправьте класс температуры

Исправь класс с температурой

Что уже дано

В редакторе уже находится класс 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

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи