Реализация телефонной книги в PYTHON
Архитектура приложения
Создание структуры для одного контакта
Подготовка к сохранению
Класс PhoneBook — менеджер контактов
Добавление новых записей
Просмотр содержимого
Сохранение данных в файл
Работа с модулем JSON (Сохранение)
Загрузка данных и обработка ошибок
Превращение JSON обратно в объекты
Практическая проверка кода
Что должно вывести
308.18K

Лекция для ЛР 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:
English     Русский Rules