matlab.metadata.Property - Describe property of MATLAB class - MATLAB (original) (raw)

Namespace: matlab.metadata
Superclasses: matlab.metadata.MetaData

Describe property of MATLAB class

Renamed from meta.property in R2024a

Description

The matlab.metadata.Property class provides information about the properties of MATLAB® classes. Properties of the matlab.metadata.Property class contain the values of property attributes and other information that is specified syntactically in the class definition. All properties are read-only.

The matlab.metadata.Property class is a handle class.

Class Attributes

Abstract true
ConstructOnLoad true

For information on class attributes, see Class Attributes.

Creation

You cannot instantiate a matlab.metadata.Property object directly. Obtain amatlab.metadata.Property object from the PropertyList property of matlab.metadata.Class, which contains an array ofmatlab.metadata.Property objects, one for each class property. For example, replace ClassName with the name of the class whose properties you want to query:

mco = ?ClassName; plist = mco.PropertyList; mp = plist(1); % matlab.metadata.Property for first property in list

Use the metaclass function to obtain amatlab.metadata.Class object from a class instance:

Properties

expand all

Name — Property name

character vector

Property name, returned as a character vector. The Name property of matlab.metadata.Property corresponds to the name of the associated property defined by the class.

Description — Short description of property

character vector

Short description of the property, returned as a character vector. For user-defined classes, the text for this property comes from code comments for the property definition. If there are no comments, the property returns an empty character vector. For more information on how to include help text for your class properties, see Custom Help Text.

DetailedDescription — Detailed description of property

character vector

Detailed description of the property, specified as a character vector. For user-defined classes, the text for this property comes from code comments for the property definition. If there are no comments, the property returns an empty character vector. For more information on how to include help text for your class properties, seeCustom Help Text.

GetAccess — Value of property attribute GetAccess

public (default) | protected | private | one or more matlab.metadata.Class objects

Value of property attribute GetAccess, returned as:

For more information, see Class Members Access.

SetAccess — Value of property attribute SetAccess

public (default) | protected | private | immutable | one or more matlab.metadata.Class objects

Value of property attribute SetAccess, returned as:

For more information, see Class Members Access.

Dependent — Value of property attribute Dependent

false (default) | true

Value of property attribute Dependent, returned as logicaltrue or false. If false (the default), the property value is stored in the object. If true, the property value is not stored in the object, and the set and get methods cannot access the property by indexing into the object using the property name. Dependent properties must define access methods. For more information, see Get and Set Methods for Dependent Properties.

Constant — Value of property attribute Constant

false (default) | true

Value of property attribute Constant, returned as logicaltrue or false. If true, this property has the same value in all instances of the class. For more information, seeDefine Class Properties with Constant Values.

Abstract — Value of property attribute Abstract

false (default) | true

Value of property attribute Abstract, returned as logicaltrue or false. If true, the property has no implementation and the class is abstract. For more information, seeAbstract Classes and Class Members.

Transient — Value of property attribute Transient

false (default) | true

Value of property attribute Transient, returned as logicaltrue or false. If true, the property value is not saved when the object is saved to a MAT-file. For more information about saving objects, see Default Save and Load Process for Objects.

Hidden — Value of property attribute Hidden

false (default) | true

Value of property attribute Hidden, returned as logicaltrue or false. Hidden determines if the property is shown in a property list (as a result of a call toproperties, for example). Hidden properties are not shown in the default object display.

GetObservable — Value of property attribute GetObservable

false (default) | true

Value of property attribute GetObservable, returned as logicaltrue or false. If true, and it is a handle class property, then you can create listeners that execute when the property value is queried. MATLAB calls the listeners whenever property values are queried. For more information, see Property-Set and Query Events.

SetObservable — Value of property attribute SetObservable

false (default) | true

Value of property attribute SetObservable, returned as logicaltrue or false. If true, and it is a handle class property, then you can create listeners that execute when the property value is set. MATLAB calls the listeners whenever property values are modified. For more information, see Property-Set and Query Events.

AbortSet — Value of property attribute AbortSet

false (default) | true

Value of property attribute AbortSet, returned as logicaltrue or false. If true, then setting a property value is aborted if the new value is the same as the current value. If the property belongs to a handle class, setting AbortSet totrue prevents the triggering of property PreSet and PostSet events.

NonCopyable — Value of property attribute NonCopyable

false (default) | true

Value of property attribute NonCopyable, returned as logicaltrue or false. If false, the property value is copied when the object is copied (handle class only). By default, copying a handle object copies the concrete properties of that object. For more information, see Exclude Properties from Copy.

PartialMatchPriority — Value of property attribute PartialMatchPriority

1 (default) | positive integer

Value of property attribute PartialMatchPriority, returned as a numeric value. Use with subclasses of matlab.mixin.SetGet to define the relative priority of partial property name matches used in set and get method arguments. The default value is 1. Greater values assign lower priorities. For more information, see Set Priority for Matching Partial Property Names.

GetMethod — Property get method

[] (default) | function handle

Property get method, returned as a function handle of the get method associated with this property or an empty value. The value is empty if there is no get method specified in the class definition. For more information, see Property Get and Set Methods.

SetMethod — Property set method

[] (default) | function handle

Property set method, returned as a function handle of the set method associated with this property or an empty value. The value is empty if there is no set method specified in the class definition. For more information, see Property Get and Set Methods

HasDefault — Indicates if property has default value

false (default) | true

Indicates if the property has a default value, returned as logicaltrue or false. If true, the property defines a default value in the class definition. TestHasDefault before querying the DefaultValue property to avoid a MATLAB:class:NoDefaultDefined error.

DefaultValue — Default value specified in class definition

empty (default) | array

Default value specified in the class definition. Abstract, dependent, and dynamic properties cannot specify default values.

If there is no default value in the class definition, MATLAB does not display the DefaultValue property. TestHasDefault before querying the DefaultValue property to avoid a MATLAB:class:NoDefaultDefined error.

Validation — Validation defined for property

empty (default) | matlab.metadata.Validation object

Validation defined for the property, returned as amatlab.metadata.Validation object. This property contains a matlab.metadata.Validation object describing the validation defined by this property. If the property does not define validation, this property contains an emptymatlab.metadata.Validation object.

DefiningClass — Class that defines the property

matlab.metadata.Class object

Class that defines the property, returned as a matlab.metadata.Class object. The matlab.metadata.Class object represents the class that defines this property, which can be a superclass.

Events

Event Name Trigger Event Data Event Attributes
PreGet Event occurs just before the property value is queried. event.PropertyEvent NotifyAccess: privateListenAccess: public
PostGet Event occurs just after the property value has been queried. event.PropertyEvent NotifyAccess: privateListenAccess: public
PreSet Event occurs just before the property value is changed. event.PropertyEvent NotifyAccess: privateListenAccess: public
PostSet Event occurs just after the property value has been changed. event.PropertyEvent NotifyAccess: privateListenAccess: public

Examples

collapse all

Use Introspection to Get Information About Property

Use matlab.metadata.Property to get information about a class property of the IntrospectionExample class.

classdef IntrospectionExample % IntrospectionExample Performs basic functions on two numbers % This class can return the sum and product of its two properties. properties % a First property % First of two numeric properties a {mustBeNumeric} = 0

    % b  Second property
    % Second of two numeric properties
    b {mustBeNumeric} = 0 
end

methods
    function sum = addNumbers(obj)
        % addNumbers  Sum the properties
        %   Finds the sum of properties a and b.
        sum = obj.a + obj.b;
    end
    function prod = multNumbers(obj)
        % multNumbers  Multiply the properties
        %   Finds the product of properties a and b.
        prod = obj.a*obj.b;
    end
end

end

Create a metaclass instance for IntrospectionExample. Access the first property in the PropertyList of mc to get amatlab.metadata.Property object.

mc = ?IntrospectionExample; mc.PropertyList(1)

ans =

Property with properties:

                Name: 'a'
         Description: 'First property'
 DetailedDescription: '  First of two numeric properties'
           GetAccess: 'public'
           SetAccess: 'public'
           Dependent: 0
            Constant: 0
            Abstract: 0
           Transient: 0
              Hidden: 0
       GetObservable: 0
       SetObservable: 0
            AbortSet: 0
         NonCopyable: 0
PartialMatchPriority: 1
           GetMethod: []
           SetMethod: []
          HasDefault: 1
        DefaultValue: 0
          Validation: [1×1 matlab.metadata.Validation]
       DefiningClass: [1×1 matlab.metadata.Class]

Check what validation the class performs on the property value. Propertya has no class or size restrictions, but it must satisfy themustBeNumeric validation function.

mc.PropertyList(1).Validation

ans =

Validation with properties:

             Class: [0×0 matlab.metadata.Class]
              Size: [1×0 matlab.metadata.ArrayDimension]
ValidatorFunctions: {@mustBeNumeric}

Version History

Introduced in R2008a

expand all

R2024a: Renamed from meta.property

The namespace and class name of meta.property have been changed tomatlab.metadata.Property. The behavior remains the same.

MATLAB will continue to recognize the old metaclass names in most contexts. However, code that relies on string comparisons to identify metaclasses might need to be updated to continue to work as expected. For example, if mObj in the example below is a matlab.metadata.Property instance, the code under thecase statement for 'meta.property' does not execute because class(mObj) returns'matlab.metadata.Property'.

switch class(mObj) case 'meta.property' % code to execute if mObj is a meta.property instance ... end

To ensure this code continues to work as intended, use an if statement with isa. The isa command recognizes both the old and new names of the class.

if isa(mObj,'meta.property') % code to execute if mObj is a matlab.metadata.Property instance else ... end

If compatibility with older releases of MATLAB is not a concern, you can update 'meta.property' to'matlab.metadata.Property'. However, continue to use the old name if your code needs to run on versions of MATLAB before R2024a.

R2022a: Description and DetailedDescription properties contain text from code comments

For user-defined classes with appropriately placed code comments, theDescription and DetailedDescription properties are populated with text pulled from those comments. For more information on how to use code comments to store custom help text for user-defined classes, see Custom Help Text.