feat: implement legacy shop management system and add task documentation files
CI Check / lint-and-check (push) Failing after 9s
CI Check / lint-and-check (push) Failing after 9s
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
### Задача 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` создался и содержит правильные данные
|
||||
Reference in New Issue
Block a user