Files
Igor-kr/Final control/4/TASK.md
T
Dmitry Belan ee235ece10
CI Check / lint-and-check (push) Failing after 9s
feat: implement legacy shop management system and add task documentation files
2026-07-18 12:25:32 +03:00

33 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Задача 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` создался и содержит правильные данные