Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

meta.property 类

命名空间: meta
超类: meta.MetaData

描述 MATLAB 类的属性

描述

meta.property 类提供有关 MATLAB® 类属性的信息。meta.property 类的属性包含属性特性值和在类定义中根据语法指定的其他信息。所有属性都为只读属性。

meta.property 类是一个 handle 类。

类属性

Abstract
true
ConstructOnLoad
true

有关类属性的信息,请参阅类属性

创建对象

您不能直接对 meta.property 对象进行实例化。请通过 meta.class PropertyList 属性获取 meta.property 对象,该属性包含一个 meta.property 对象数组,每个类属性对应一个对象。例如,将 ClassName 替换为要查询其属性的类的名称:

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

使用 metaclass 函数从类实例获取 meta.class 对象:

mco = metaclass(obj);

属性

全部展开

属性名称,以字符向量形式返回。meta.property Name 属性对应于类定义的关联属性的名称。

属性的简短描述,以字符向量形式返回。对于用户定义的类,此属性的文本来自属性定义的代码注释。如果没有注释,该属性将返回空字符向量。有关如何包含类属性的帮助文本的详细信息,请参阅自定义帮助文本

属性的详细描述,指定为字符向量。对于用户定义的类,此属性的文本来自属性定义的代码注释。如果没有注释,该属性将返回空字符向量。有关如何包含类属性的帮助文本的详细信息,请参阅自定义帮助文本

属性的读取 (get) 访问级别,以下列形式返回:

  • public - 不受限制的访问

  • protected - 从类或子类进行访问

  • private - 仅由类成员访问(不从子类访问)

  • 对此属性具有读取权限的类的列表,指定为 meta.class 对象,形式如下:

    • 单个 meta.class 对象。

    • meta.class 对象元胞数组。空元胞数组 {}private 访问权限相同。

有关详细信息,请参阅类成员访问

数据类型: enumerated | meta.class

属性的写入 (set) 访问级别,以下列形式返回:

  • public - 不受限制的访问

  • protected - 从类或子类进行访问

  • private - 仅由类成员访问(不从子类访问)

  • immutable - 属性只能由构造函数设置。有关详细信息,请参阅Mutable and Immutable Properties

  • 对此属性具有写入权限的类的列表,指定为 meta.class 对象,形式如下:

    • 单个 meta.class 对象。

    • meta.class 对象元胞数组。空元胞数组 {}private 访问权限相同。

有关详细信息,请参阅类成员访问

数据类型: enumerated | meta.class

属性值是否取决于其他值,以逻辑值 truefalse 形式返回。如果为 false(默认值),则属性值存储在对象中。如果为 true,属性值将不会存储在对象中,并且 set 和 get 函数无法通过使用属性名称进行对象索引来访问属性。从属属性必须定义访问方法。有关详细信息,请参阅从属属性的 get 和 set 方法

属性值是否为常量,以逻辑值 truefalse 形式返回。如果为 true,此属性在该类的所有实例中具有相同的值。有关详细信息,请参阅定义具有常量值的类属性

是否为抽象属性,以逻辑值 truefalse 形式返回。如果为 true,则该属性没有实现,并且该类是抽象类。有关详细信息,请参阅抽象类和类成员

属性是否与对象一起保存,以逻辑值 truefalse 形式返回。如果为 true,则当对象保存到 MAT 文件时,属性值不会保存。有关保存对象的详细信息,请参阅对象的保存和加载过程

属性是否从属性列表中隐藏,以逻辑值 truefalse 形式返回。Hidden 确定属性是否显示在属性列表中(例如,作为调用 properties 的结果)。默认对象显示中不显示隐藏属性。

侦听程序能否接收属性 get 事件,以逻辑值 truefalse 形式返回。如果为 true,并且它是句柄类属性,则您可以创建在查询属性值时执行的侦听程序。每当查询属性值时,MATLAB 都会调用侦听程序。有关详细信息,请参阅属性 set 和查询事件

侦听程序能否接收属性 set 事件,以逻辑值 truefalse 形式返回。如果为 true,并且它是句柄类属性,则您可以创建在设置属性值时执行的侦听程序。每当修改属性值时,MATLAB 都会调用侦听程序。有关详细信息,请参阅属性 set 和查询事件

在值不变时是否设置属性,以逻辑值 truefalse 形式返回。如果为 true,则当新值与当前值相同时,会中止设置属性值。如果该属性属于句柄类,则将 AbortSet 设置为 true 会阻止属性 PreSetPostSet 事件的触发。

属性是否可复制,以逻辑值 truefalse 形式返回。如果为 false,则复制对象时复制属性值(仅限 handle 类)。默认情况下,复制句柄对象会复制该对象的具体属性。有关详细信息,请参阅Exclude Properties from Copy

部分名称匹配的优先级,以数值形式返回。与 matlab.mixin.SetGet 的子类结合使用,定义 setget 方法参数中使用的部分属性名称匹配的相对优先级。默认值为 1。值越高,分配的优先级越低。有关详细信息,请参阅为属性名称的部分匹配设置优先级

属性 get 方法,以函数句柄或空值形式返回。与此属性关联的 get 方法的函数句柄。如果类定义中没有指定 get 方法,则值为空。有关详细信息,请参阅 属性 get 和 set 方法

属性 set 方法,以函数句柄或空值形式返回。与此属性关联的 set 方法的函数句柄。如果类定义中没有指定 set 方法,则值为空。有关详细信息,请参阅 属性 get 和 set 方法

属性是否定义默认值,以逻辑值 truefalse 形式返回。如果为 true,该属性在类定义中定义默认值。请在查询 DefaultValue 属性之前测试 HasDefault,以避免出现 MATLAB:class:NoDefaultDefined 错误。

数据类型: logical

在类定义中指定的默认值。抽象属性、从属属性和动态属性不能指定默认值。

如果类定义中没有默认值,MATLAB 不会显示 DefaultValue 属性。请在查询 DefaultValue 属性之前测试 HasDefault,以避免出现 MATLAB:class:NoDefaultDefined 错误。

为属性定义的验证,以 meta.Validation 对象形式返回。此属性包含说明由此属性定义的验证的 meta.Validation 对象。如果属性未定义验证,则此属性包含空 meta.Validation 对象。

定义属性的类,以 meta.class 对象形式返回。meta.class 对象表示定义此属性的类,它可以是超类。

事件

事件名称触发器事件数据事件属性
PreGet事件正好在查询属性值之前发生。event.PropertyEvent

NotifyAccess: private

ListenAccess: public

PostGet事件正好在查询属性值之后发生。event.PropertyEvent

NotifyAccess: private

ListenAccess: public

PreSet事件正好在更改属性值之前发生。event.PropertyEvent

NotifyAccess: private

ListenAccess: public

PostSet事件正好在更改属性值之后发生。event.PropertyEvent

NotifyAccess: private

ListenAccess: public

示例

全部折叠

使用 meta.property 获取有关 IntrospectionExample 类的类属性的信息。

IntrospectionExample 的代码

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

创建并检查元类实例

创建 IntrospectionExample 的一个元类实例。访问 mcPropertyList 中的第一个属性以获取 meta.property 对象。

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: [1x1 meta.Validation]
           DefiningClass: [1x1 meta.class]

检查该类对属性值执行什么验证。

mc.PropertyList(1).Validation
ans = 
  Validation with properties:

                 Class: [0x0 meta.class]
                  Size: [1x0 meta.ArrayDimension]
    ValidatorFunctions: {@mustBeNumeric}

版本历史记录

在 R2008a 中推出

全部展开