Установка ConstructOnLoad
класса атрибут к
true
вызывает MATLAB® вызывать конструктор классов при загрузке класса. MATLAB сохраняет и восстанавливает динамические свойства при загрузке объекта.
Если вы создаете динамические свойства из конструктора классов, можно вызвать конфликт, если вы также задаете класс ConstructOnLoad
атрибут к true
. Вот последовательность:
Сохраненный объект сохраняет имена и значения свойств, включая динамические свойства
При загрузке создается новый объект, и все свойства восстанавливаются до значений во время сохранения объекта
Затем, ConstructOnLoad
атрибут вызывает вызов конструктора классов, который создает другое динамическое свойство с таким же именем, как и загруженное свойство. Смотрите раздел «Сохранение и загрузка Объектов» для получения дополнительной информации о последовательности нагрузок.
MATLAB предотвращает конфликт, загружая сохраненное динамическое свойство, и не выполняет addprop
при вызове конструктора.
Если вы используете ConstructOnLoad
, добавьте динамические свойства из конструктора классов и хотите, чтобы конструктор вызвал addprop
во время загрузки установите динамическое свойство Transient
атрибут к true
. Этот параметр препятствует сохранению свойства. Для примера:
classdef (ConstructOnLoad) MyClass < dynamicprops function obj = MyClass P = addprop(obj,'DynProp'); P.Transient = true; ... end end