Similar presentations:
Лекция для ЛР 10
1. Реализация телефонной книги в PYTHON
РЕАЛИЗАЦИЯТЕЛЕФОННОЙ КНИГИ В
PYTHON
2. Архитектура приложения
АРХИТЕКТУРА ПРИЛОЖЕНИЯ• Программа использует модуль json для работы с файлами.
• Класс Contact: отвечает за хранение данных одного человека (имя и телефон).
• Класс PhoneBook: отвечает за управление коллекцией контактов (добавление,
просмотр, сохранение и загрузка).
• Основной блок кода: демонстрирует, как эти классы взаимодействуют друг с
другом на практике.
3. Создание структуры для одного контакта
СОЗДАНИЕ СТРУКТУРЫ ДЛЯ ОДНОГО КОНТАКТА• В классе Contact мы определяем
метод __init__.
• Он принимает аргументы name и
phone и сохраняет их как атрибуты
объекта.
Теперь каждый человек в нашей книге — это самостоятельный объект.
4. Подготовка к сохранению
ПОДГОТОВКА К СОХРАНЕНИЮ• Модуль json не умеет напрямую
сохранять сложные объекты Python
(экземпляры пользовательских классов).
• Чтобы решить эту проблему, мы пишем
метод to_dict().
• Он берет атрибуты объекта и
упаковывает их в обычный словарь
(dictionary), который json легко
понимает.
5. Класс PhoneBook — менеджер контактов
КЛАСС PHONEBOOK — МЕНЕДЖЕР КОНТАКТОВ• Класс PhoneBook — это наш главный
инструмент для работы.
• В методе __init__ мы создаем пустой
список self.contacts.
Важно: в этом списке будут храниться не строки, а именно объекты класса Contact.
6. Добавление новых записей
ДОБАВЛЕНИЕ НОВЫХ ЗАПИСЕЙ• Метод add_contact принимает готовый
объект contact и добавляет его в наш
список с помощью метода append().
• Дополнительно выводится сообщение с
именем добавленного контакта для
обратной связи с пользователем.
7. Просмотр содержимого
ПРОСМОТР СОДЕРЖИМОГОМетод show_all:
• Выводит все записи на экран.
• Включает проверку: если список
self.contacts пуст, программа сообщает,
что книга пуста, и прерывает
выполнение метода через return.
• Если данные есть, цикл for проходит по
каждому объекту и выводит его
атрибуты name и phone.
8. Сохранение данных в файл
СОХРАНЕНИЕ ДАННЫХ В ФАЙЛМетод save_to_file — подготовка данных
• Прежде чем записать данные, мы создаем
пустой список data_to_save.
• С помощью цикла мы проходим по всем
объектам Contact в книге.
• Для каждого объекта вызывается метод
to_dict(), а результат (словарь) добавляется в
новый список.
• Теперь у нас есть список словарей, готовый к
сохранению.
9. Работа с модулем JSON (Сохранение)
РАБОТА С МОДУЛЕМ JSON (СОХРАНЕНИЕ)• Открываем файл с помощью контекстного
менеджера with open(...) в режиме записи
("w").
• Обязательно указываем encoding="utf-8",
чтобы русские буквы сохранялись корректно.
• Функция json.dump записывает наш список
словарей в файл.
• Параметр ensure_ascii=False отключает
экранирование кириллицы, а indent=4 делает
файл читаемым.
10. Загрузка данных и обработка ошибок
ЗАГРУЗКА ДАННЫХ И ОБРАБОТКА ОШИБОКМетод load_from_file — начало работы
• Чтение файла происходит в блоке
try/except.
• Если файла еще не существует (например,
при первом запуске), сработает except
FileNotFoundError.
• Программа не зависнет с ошибкой, а
выведет сообщение: "Файл сохранения не
найден. Начинаем с чистой книги."
11. Превращение JSON обратно в объекты
ПРЕВРАЩЕНИЕ JSON ОБРАТНО В ОБЪЕКТЫВосстановление объектов Contact
• Открыв файл в режиме чтения ("r"), мы
используем json.load() для получения
списка словарей.
• Затем мы очищаем текущий список
self.contacts.
• В цикле берем каждый словарь,
извлекаем "name" и "phone", создаем
новый экземпляр Contact и добавляем
его в книгу.
12. Практическая проверка кода
ПРАКТИЧЕСКАЯ ПРОВЕРКА КОДАВ основном блоке мы тестируем весь функционал.
• Создаем книгу my_book.
• Создаем два объекта Contact (Иван и Анна) и добавляем их в
книгу.
• Смотрим результат через show_all().
• Сохраняем книгу в файл contacts.json.
• Создаем совершенно новую книгу new_book, загружаем в нее
данные из файла и выводим на экран, чтобы убедиться, что
сохранение работает идеально. *(Примечание: в исходном коде
была опечатка if name == '__main__':, правильно использовать
__name__)*.
13. Что должно вывести
ЧТО ДОЛЖНО ВЫВЕСТИВ Python:
В файле формата JSON: