Задача 1. Работа с файлом
Реализуйте модернизированную версию контекст-менеджера File:
- теперь при попытке открыть несуществующий файл менеджер автоматически создаёт и открывает этот файл в режиме записи;
- на выходе из менеджера подавляются все исключения, связанные с файлами.
Задача 2. Математический модуль
Ирина использует в своей программе очень много различных математических вычислений, связанных с фигурами. Например, нахождение их площадей или периметров. Поэтому, чтобы не захламлять код огромным количеством функций, она решила выделить для них отдельный класс, подключить как модуль и использовать по аналогии с модулем math.
Реализуйте класс MyMath, состоящий как минимум из следующих методов (можете бонусом добавить и другие методы):
- вычисление длины окружности,
- вычисление площади окружности,
- вычисление объёма куба,
- вычисление площади поверхности сферы.
Задача 3. Дата
Что нужно сделать
Реализуйте класс Date, который должен:
- проверять числа даты на корректность;
- конвертировать строку даты в объект класса Date, состоящий из соответствующих числовых значений дня, месяца и года.
Оба метода должны получать на вход строку вида dd-mm-yyyy.
При тестировании программы объект класса Date должен инициализироваться исключительно через метод конвертации.
Задача 4. Кэширование запросов
Вы разрабатываете программу для кэширования запросов к внешнему API. Часто повторяющиеся запросы занимают много времени, поэтому вы решаете создать класс LRU Cache (Least Recently Used Cache), который будет хранить ограниченное количество запросов и автоматически удалять самые старые при достижении лимита. Это позволит значительно ускорить повторяющиеся запросы, так как данные будут браться из кэша, а не отправляться повторно.
Задача
- Создайте класс LRU Cache, который хранит ограниченное количество объектов и, при превышении лимита, удаляет самые давние (самые старые) использованные элементы.
- Реализуйте методы добавления и извлечения элементов с использованием декораторов property и setter.