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 属性对应于类定义的关联属性的名称。

数据类型: char

当前不用于从注释中收集有关类的信息。

数据类型: char

当前不用于从注释中收集有关类的信息。

数据类型: char

哪些代码可以查询属性值,以下列各项之一形式返回:

public - 不受限制的访问

protected - 从类或子类进行访问

private - 仅通过类成员访问

允许访问此属性的类的列表。采用以下格式将类指定为 meta.class 对象:

  • 单个 meta.class 对象

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

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

示例: properties (GetAccess = protected)

数据类型: enumerated | meta.class

哪些代码可以设置此属性值,以下列各项之一形式返回:

public - 不受限制的访问

protected - 从类或子类进行访问

private - 仅通过类成员访问

immutable - 只能在构造函数中设置属性。

有关详细信息,请参阅 Mutable and Immutable Properties

列出对此属性进行设置的类。采用以下格式将类指定为 meta.class 对象:

  • 单个 meta.class 对象

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

请参阅类成员访问

示例: properties (SetAccess = protected)

数据类型: enumerated | meta.class

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

示例: properties (Dependent = true)

数据类型: logical

属性值是否为常量,以逻辑值 truefalse 形式返回。如果为 true,则此属性在类的所有实例中仅使用一个值。

  • 子类会继承常量属性,但不能更改常量属性。

  • Constant 属性不能为 Dependent

  • SetAccess 被忽略。

请参阅定义具有常量值的类属性

示例: properties (Constant = true)

数据类型: logical

属性是否为抽象属性,以逻辑值 truefalse 形式返回。如果为 true,则该属性没有实现,并且该类是抽象类。

  • 抽象属性不能定义设置或访问方法。请参阅属性访问方法

  • 抽象属性不能定义初始值。Assigning a Default Value

  • 对于属性 SetAccessGetAccess 特性,所有子类必须与超类指定相同的值。

  • Abstract=true 必须与类特性 Sealed=false(默认设置)一起使用。

示例: properties (Abstract = true)

数据类型: logical

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

示例: properties (Transient = true)

数据类型: logical

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

示例: properties (Hidden = true)

数据类型: logical

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

示例: properties (GetObservable = true)

数据类型: logical

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

示例: properties (SetObservable = true)

数据类型: logical

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

示例: properties (AbortSet = true)

数据类型: logical

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

示例: properties (NonCopyable = true)

数据类型: logical

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

有关详细信息,请参阅为属性名称的部分匹配设置优先级

示例: properties (PartialNatchPriority = 2)

数据类型: positive integer

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

数据类型: function_handle

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

数据类型: function_handle

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

数据类型: logical

类定义中指定的默认值,以指定的值形式返回。抽象属性、从属属性和动态属性不能指定默认值。默认值必须满足为属性指定的任何验证。有关属性验证的详细信息,请参阅验证属性值。如果类定义中没有默认值,MATLAB 不会显示 DefaultValue 属性。

对于没有在类定义中指定默认值的属性,尝试访问 DefaultValue 会导致 MATLAB:class:NoDefaultDefined 错误。使用 HasDefault 属性来确定类是否定义该属性的默认值。

示例: Prop = 7

数据类型: any

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

数据类型: meta.Validation

定义属性的类,以 meta.class 对象形式返回。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 对象的属性来确定哪些类属性为只读。

获取名为 MyClass 的类的 meta.class 对象。

mc = ?MyClass;

使用 findobj 搜索 meta.class PropertyList 属性中包含的 meta.property 对象的列表。对 findobj 的此调用返回只读属性的名称。

findobj(mc.PropertyList,'GetAccess','public','-AND','-NOT','SetAccess','public').Name
在 R2008a 中推出