Main Content

객체에 대한 저장 및 불러오기 프로세스

객체 저장 및 불러오기

saveload를 사용하여 객체를 저장하고 다시 불러올 수 있습니다.

save filename object
load filename object

저장되는 정보

MAT 파일에 객체를 저장하면 다음 항목이 저장됩니다.

  • 네임스페이스 한정자를 포함하여 객체 클래스의 전체 이름

  • 동적 속성의 값

  • 클래스의 첫 번째 객체가 MAT 파일에 저장될 때 클래스로 정의된 모든 속성의 디폴트 값

  • 모든 속성의 이름 및 값. 다음과 같은 예외가 적용됩니다.

    • 현재 값이 클래스 정의에 지정된 디폴트 값과 같은 경우 속성이 저장되지 않습니다.

    • Transient, Constant 또는 Dependent 특성이 true로 설정된 경우 속성이 저장되지 않습니다.

속성 특성에 대한 설명은 속성 특성(Attribute) 항목을 참조하십시오.

그래픽스 객체를 저장하려면 savefig를 참조하십시오.

속성 데이터를 불러오는 방식

MAT 파일에서 객체를 불러오면 load 함수가 객체를 복원합니다.

  • load가 새 객체를 생성합니다.

  • 클래스의 ConstructOnLoad 특성이 true로 설정된 경우 load가 인수 없이 클래스 생성자를 호출합니다. 그렇지 않은 경우 load가 클래스 생성자를 호출하지 않습니다.

  • 저장되어 있는 속성값을 load가 객체 속성에 할당합니다. 이렇게 할당된 값은 클래스로 정의된 모든 속성 유효성 검사의 대상이 됩니다. 그러면 클래스로 정의되어 있는 모든 속성 set 메서드가 호출됩니다(Dependent, Constant 또는 Transient 속성은 예외로, 저장되거나 불러오지 않음).

  • 값이 저장되지 않은 속성에는 load가 MAT 파일에 저장되어 있는 디폴트 값을 할당합니다. 이렇게 값을 할당하면 클래스로 정의된 속성 set 메서드가 호출됩니다.

  • 불러오는 객체의 속성에 객체가 포함되어 있는 경우 load는 동일한 클래스의 새 객체를 생성하여 속성에 할당합니다. 속성에 포함된 객체가 핸들 객체인 경우 속성은 동일한 클래스의 새 핸들 객체를 포함합니다.

MATLAB®은 속성 set 메서드를 호출하여 클래스 정의가 변경되어도 속성값이 계속 유효하도록 합니다.

자세한 내용은 속성 get 및 set 메서드속성값 유효성 검사 항목을 참조하십시오.

불러오는 중 오류 발생

새 버전의 클래스가 속성을 제거하거나 속성의 이름을 바꾸거나 속성의 유효성을 변경하는 경우 변경되거나 삭제된 속성을 설정하려고 하면 load가 오류를 생성할 수 있습니다.

객체를 파일에서 불러올 때 오류가 발생하면 MATLAB이 다음 작업 중 하나를 수행합니다.

  • 클래스가 loadobj 메서드를 정의하는 경우 MATLAB이 저장된 값을 structloadobj 메서드로 반환합니다.

  • 클래스가 loadobj 메서드를 정의하지 않은 경우 MATLAB이 오류를 표시하지 않고 무시합니다. 오류를 생성하지 않는 속성값으로 load 함수가 객체를 다시 구성합니다.

loadobj 메서드에 전달된 struct에서 필드 이름은 속성 이름과 일치합니다. 필드 값은 대응하는 속성에 저장된 값입니다.

저장된 객체가 동일한 이름의 프라이빗 속성을 갖는 여러 슈퍼클래스에서 파생되는 경우 struct는 가장 직속 슈퍼클래스의 속성값만 포함합니다.

saveobj 메서드와 loadobj 메서드를 구현하는 방법에 대한 자세한 내용은 Modify the Save and Load Process 항목을 참조하십시오.

속성 유효성 검사 변경

클래스 정의로 인해 속성 유효성 검사가 변경되어 불러온 속성값이 더 이상 유효하지 않게 된 경우 MATLAB이 해당 속성에 대해 현재 정의된 디폴트 값을 대체합니다. 이 클래스는 loadobj 메서드나 변환기 메서드를 정의하여 클래스 버전 간의 호환성을 제공할 수 있습니다.

속성 유효성 검사에 대한 내용은 속성값 유효성 검사 항목을 참조하십시오.

참고 항목

관련 항목