Сохранение и загрузка процесса для объектов

Сохраните и загрузите объекты

Использовать save и load для хранения и перезагрузки объектов:

save filename object
load filename object

Какая информация сохранена?

Сохранение объектов в MAT-файлах сохраняет:

  • Полное имя класса объекта, включая все классификаторы пакетов

  • Значения динамических свойств

  • Все значения свойства по умолчанию, заданные классом в момент сохранения первого объекта класса в MAT-файле.

  • Имена и значения всех свойств, за следующими исключениями:

    • Свойства не сохраняются, если их текущие значения совпадают со значениями по умолчанию, заданными в определении класса.

    • Свойства не сохраняются, если их Transient, Constant, или Dependent для атрибутов задано значение true.

Описание атрибутов свойств см. в разделе «Задание атрибутов свойств»

Для сохранения графических объектов см. savefig.

Примечание

Не используйте pack команда с объектами, которые задают события и прослушиватели. pack команда приводит к уничтожению всех прослушивателей, определенных для объектов в рабочей области. Дополнительные сведения о восстановлении прослушивателей при сохранении объектов см. в разделе Восстановление прослушивателей.

Как загружаются данные свойств?

При загрузке объектов из MAT-файлов, load функция восстанавливает объект.

  • load создает новый объект.

  • Если класс ConstructOnLoad для атрибута задано значение true, load вызывает конструктор классов без аргументов. В противном случае, load не вызывает конструктор классов.

  • load присваивает сохраненные значения свойств свойствам объекта. Эти присвоенные значения подвергаются любой валидации свойства, определенной классом. Затем вызываются любые методы набора свойств, определенные классом (кроме случаев Dependent, Constant, или Transient свойства, которые не сохраняются и не загружаются).

  • load присваивает значения по умолчанию, сохраненные в MAT-файле, свойствам, значения которых не были сохранены, поскольку при сохранении свойства были установлены на значения по умолчанию. Эти назначения приводят к вызовам методов набора свойств, определенных классом.

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

MATLAB® вызывает методы набора свойств, чтобы убедиться, что значения свойств все еще действительны в случаях, когда определение класса изменилось.

Для получения дополнительной информации смотрите Методы набора свойств и Валидация значений свойств.

Ошибки во время загрузки

Если новая версия класса удаляет, переименовывает или изменяет валидацию свойства, load может сгенерировать ошибку при попытке задать измененное или удаленное свойство.

Когда ошибка возникает во время загрузки объекта из файла, MATLAB делает одно из следующих:

  • Если класс задает a loadobj MATLAB возвращает сохраненные значения в loadobj метод в a struct.

  • Если класс не задает a loadobj метод, MATLAB молча игнорирует ошибки. load функция восстанавливает объект со значениями свойств, которые не приводят к ошибке.

В struct передан в loadobj метод, имена полей соответствуют именам свойства. Значения полей являются сохраненными значениями для соответствующих свойств.

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

Для получения информации о том, как реализовать saveobj и loadobj методы, см. Изменение процесса сохранения и загрузки.

Изменения в валидации свойств

Если определение класса изменяет валидацию свойства таким образом, что загруженные значения свойств больше не действительны, MATLAB заменяет текущее значение по умолчанию для этого свойства. Класс может задать loadobj методы метода или конвертера для обеспечения совместимости между версиями классов.

Для получения информации о проверке свойств смотрите Валидация значений свойств

См. также

Похожие темы