Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 [ 81 ] 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

dump (object)

"Консервирует" объект object.

persistent id( object)

Этот метод (функция или любой другой объект, поддерживающий вызов) вызывается для каждого из вложенных объектов. Должен возвращать строку-идентификатор постоянного объекта или None, если объект подлежит консервации. Изначально метод persistent id() не определен (cPickle) или всегда возвращает None (pickle).

Объекты, возвращаемые конструктором Unpickler() , имеют методы, предназначенные для выполнения обратных действий:

load()

Восстанавливает и возвращает ранее "законсервированный" объект.

noload() (только в модуле cPickle)

Проходит весь цикл восстановления объекта, но сам объект не создает. Может быть полезен для тестирования persistent load

Обратите внимание, что при "консервации" экземпляра класса сам объект-класс и, соответственно, его атрибуты не сохраняются - сохраняются только атрибуты экземпляра и запоминается имя класса и модуля, в котором класс определен. Поэтому класс должен быть определен в глобальном пространстве имен модуля, который, однако, в момент восстановления может быть и не импортирован. Это сделано с целью иметь возможность исправить ошибки в определении класса или добавить новые методы и загрузить объект, созданный со старой версией класса. Если Вы собираетесь работать с долгоживущими объектами, которые переживут множество версий класса, разумно сохранить номер версии класса, чтобы затем необходимые преобразования могли быть выполнены методом setstate ().

Модули pickle и cPickle определяют следующие конструкторы:

Pickler (file [, bin])

Класс (в модуле pickle) или функция (в модуле cPickle), возвращает объект, реализующий "консервирование". Аргумент file должен быть файловым объектом, имеющим метод write() . Если задан отличный от нуля аргумент bin (целое число), используется более компактный двоичный формат.

Unpickler( file)

Класс (в модуле pickle) или функция (в модуле cPickle), возвращает объект, реализующий восстановление "законсервированного" объекта. Аргумент file должен быть файловым объектом, имеющим методы read() и readline() .

Объекты, возвращаемые конструктором Pickler() , имеют следующие (основные) методы:



20.1. pickle и cPickle - представление объектов в виде ... 261

persistent load(idstring)

Этот метод (функция или любой другой объект, поддерживающий вызов) вызывается для восстановления ссылки на постоянный объект по строке-идентификатору id string, которая при "консервации" была возвращена методом persistent id() . Изначально метод persistent load() не определен.

Вы можете несколько раз вызывать метод dump() объекта Pickler. Для восстановления всех "законсервированных" объектов необходимо будет столько же раз вызвать метод load() соответствующего объекта Unpickler(). Если один и тот же объект "консервируется" несколько раз методом dump() одного и того же объекта Pickler, метод load() восстановит ссылки на один и тот же объект. Предполагается, что "консервация" нескольких объектов производится без внесения в них изменений в промежутке между вызовами метода load() . Если Вы измените объект и затем повторно "законсервируете" его с помощью того же объекта Pickler, объект не будет "законсервирован" - сохранится лишь ссылка на старое значение.

Кроме конструкторов Pickler() и Unpickler(), модули определяют следующие функции и объекты данных:

dump (object, file [, bin])

"Консервирует" объект object в файл file. Эквивалентно вызову Pickler(file, bin).dump(object) .

load( file)

Восстанавливает "законсервированный" объект из файла file и возвращает его.

dumps( object [, bin])

Возвращает "законсервированное" представление объекта в виде строки вместо того, чтобы записывать его в файл.

loads( string)

Восстанавливает "законсервированный" объект из строки string и возвращает его.

format version

Строка-версия формата, используемого при "консервации".

compatible formats

Список старых версий (строк) формата данных, которые, помимо текущей версии (format version), могут быть восстановлены.

Ниже приведена иерархия исключений, которые используются модулями pickle и cPickle при возникновении ошибок (до версии 2.0 исключения определены в виде строк, что сильно затрудняет их обработку):

PickleError

Базовый класс для всех исключений, является производным от стандартного класса исключений Exception.



20.2 shelve - сохранение объектов в базе данных в стиле DBM

С помощью этого модуля Вы можете создать "стеллаж" (shelf) - объект с интерфейсом словаря, который позволяет сохранять в базе данных в стиле DBM объекты в "законсервированном" виде. Для консервации используется модуль cPickle или pickle, если первый недоступен.

open (filename [, flag])

Открывает файл filename с базой данных в стиле DBM и на его основе создает и возвращает объект-стеллаж. Флаг flag используется в качестве второго аргумента в функции anydbm.open() (см. описание модуля anydbm).

Объекты-стеллажи поддерживают большинство операций, характерных для отображений (см. раздел 11.3): доступ к объектам по ключу, добавление и удаление записей,

PicklingError

Класс исключений, которые генерируются при попытке "законсервировать" объект, который не может быть "законсервирован".

UnpicklingError

Класс исключений, которые генерируются при восстановлении объекта, если его конструктор не зарегистрирован (см. описание модуля copy reg).

Ниже приведен список объектов, которые могут быть "законсервированы":

• None;

• Целые, длинные целые и вещественные числа.

• Простые строки и строки Unicode.

• Кортежи, списки и словари, содержащие только объекты, которые могут быть "законсервированы".

• Классы и функции, определенные в глобальном пространств имен модуля (на самом деле запоминаются только имена модуля и функции).

• Экземпляры классов, атрибут dict которых может быть "законсервирован".

• Экземпляры классов, имеющих соответствующие методы протокола копирования (см. раздел ?? ).

• Объекты, поддержка которых зарегистрирована с помощью модуля copy reg. Именно таким образом осуществляется поддержка комплексных чисел.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 [ 81 ] 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145