Классы должны быть доступны для импортирования Python

klassy dolzhny byt dostupny dlya importirovaniya python Базы данных и постоянное хранение

Объект класса Pickler при сериализации объекта экземпляра сохраняет только атрибуты экземпляра и затем заново импортирует класс, чтобы воссоздать экземпляр. По этой причине, когда объекты восстанавливаются из сериализованной формы, должна обеспечиваться возможность импортировать классы сохраненных объектов — они должны быть определены как невложенные, на верхнем уровне файла модуля, который должен находиться в пути поиска модулей в момент загрузки (например, в PYTHONPATH, или в файле .pth, или в текущем рабочем каталоге, или быть самим сценарием верхнего уровня). Далее, при сериализации экземпляров классы должны ассоциироваться с действительным импортируемым модулем, а не со сценарием верхнего уровня (с именем модуля __main__), если только они не будут использоваться в сценарии верхнего уровня. Кроме того, нужно следить за тем, чтобы модули классов не перемещались после сохранения экземпляров. При восстановлении экземпляра Python должен иметь возможность найти модуль класса в пути поиска модулей по имени исходного модуля (включая префиксы путей в пакетах) и загрузить класс из этого модуля, используя первоначальное имя класса. Если модуль или класс будут перемещены или переименованы, интерпретатор не сможет отыскать класс.

В приложениях, обменивающихся сериализованными объектами через сокеты по сети, это ограничение можно удовлетворить, передавая определение класса вместе с хранимыми экземплярами — до того как извлечь сериализованные объекты, получатели могут просто сохранять класс в локальном файле модуля, находящегося в пути поиска. Где это неудобно или невозможно, вместо экземпляров классов можно передавать более простые сериализованные данные в виде вложенных друг в друга списков и словарей, так как для их воссоздания не требуется иметь исходный файл модуля с определением класса.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий