33 lines
2.1 KiB
Markdown
33 lines
2.1 KiB
Markdown
### Задача 4. Работа с JSON и файлами (ООП, JSON, Исключения)
|
||
|
||
**Постановка**
|
||
|
||
* **Конфигурация:** Умеет читать и писать настройки в JSON-файл.
|
||
* **Приложение:** Использует конфигурацию для хранения состояния.
|
||
|
||
**Задание**
|
||
|
||
**Класс `Config`:**
|
||
|
||
1. Создайте класс `Config`.
|
||
2. В `__init__(self, filename)` сохраните имя файла.
|
||
3. Метод `load(self)` — читает JSON-файл и возвращает словарь. Если файла нет, перехватывает `FileNotFoundError` и возвращает пустой словарь `{}`.
|
||
4. Метод `save(self, data)` — записывает словарь `data` в JSON-файл с отступами (`indent=4`) и кодировкой `utf-8`.
|
||
5. Метод `get(self, key, default=None)` — загружает данные и возвращает значение по ключу или `default`.
|
||
6. Метод `set(self, key, value)` — загружает данные, устанавливает новое значение, сохраняет обратно.
|
||
|
||
**Класс `Application`:**
|
||
|
||
1. Создайте класс `Application`.
|
||
2. В `__init__(self, config)` сохраните объект `Config`.
|
||
3. Метод `run(self)` — выводит приветствие с именем пользователя из конфига (ключ `"username"`), по умолчанию `"Гость"`.
|
||
4. Метод `set_username(self, name)` — сохраняет имя в конфиг через `config.set`.
|
||
|
||
**Тесты:**
|
||
|
||
1. Создайте `Config("settings.json")` и ``Application(config)
|
||
2. Запустите приложение (должно вывести "Гость")
|
||
3. Установите имя через `set_username("Иван")`
|
||
4. Запустите снова (должно вывести "Иван")
|
||
5. Проверьте, что файл `settings.json` создался и содержит правильные данные
|