Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

meta.DynamicProperty 类

包: meta
超类: meta.property

描述 MATLAB 对象的动态属性

说明

meta.DynamicProperty 类包含有关您已添加到 MATLAB® 类实例的动态属性的描述性信息。要向类实例添加动态属性,该类必须为 dynamicprops 类的子类。meta.DynamicProperty 类的属性对应于属性特性。动态属性不是在 classdef 块中定义的,但您可以通过设置 meta.DynamicProperty 对象属性来设置其特性。

您可以使用 dynamicprops 类的 addprop 方法为对象添加动态属性。addprop 方法返回表示新的动态属性的 meta.DynamicProperty 实例。您可以修改 meta.DynamicProperty 对象的属性,以设置动态属性的特性或者添加设置和访问方法,这些方法将在 classdef 文件中针对常规属性进行定义。

要删除动态属性,请对 meta.DynamicProperty 对象调用 delete 句柄类方法。

有关详细信息,请参阅动态属性 - 向实例添加属性

meta.DynamicProperty 类是 handle 类。

类属性

Abstract
true
Sealed
true

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

创建对象

您不能对 meta.DynamicProperty 类进行实例化。当您向对象添加动态属性时,addprop 方法会返回 meta.DynamicProperty。使用 findprop 获取已具有动态属性的对象的 meta.DynamicProperty 对象。

属性

全部展开

动态属性的名称,以字符向量形式返回。

数据类型: char

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

数据类型: char

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

数据类型: char

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

public - 不受限制的访问

protected - 从类或子类进行访问

private - 仅通过类成员访问

数据类型: enumerated

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

public - 不受限制的访问

protected - 从类或子类进行访问

private - 仅通过类成员访问

数据类型: enumerated

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

数据类型: logical

不允许设置动态属性的 Constant 特性。动态属性不能是常量。

数据类型: logical

如果设置为 true,则此属性没有实现,但具体的子类必须在未将 Abstract 设置为 true 的情况下重新定义此属性。

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

  • 抽象属性不能定义初始值。赋予默认值

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

  • Abstract=true 与类属性 Sealed=false 结合使用(默认值)。

数据类型: logical

如果设置为 true,则在将对象保存到文件时不保存属性值。有关保存对象的详细信息,请参阅对象的保存和加载过程

数据类型: logical

此特性确定属性是否显示在属性列表中,如属性检查器或 properties 函数的输出中。

数据类型: logical

侦听程序能否检测属性的 get 前事件和 get 后事件,指定为逻辑值。如果为 true,则可以为属性 get 事件创建侦听程序。每当查询属性值时,MATLAB 都会调用侦听程序。请参阅属性 set 和查询事件

数据类型: logical

侦听程序能否检测属性在 set 前后触发的事件,指定为逻辑值。如果为 true,则可以为属性 set 事件创建侦听程序。每当修改属性值时,MATLAB 都会调用侦听程序。请参阅属性 set 和查询事件

数据类型: logical

如果值不变则中止 set 操作,指定为逻辑值。如果设置为 true,则当新值与当前值相同时,MATLAB 不会设置属性值。中止的 set 操作不会触发属性的 PreSetPostSet 事件。

数据类型: logical

能否复制属性,指定为逻辑值。NonCopyable 确定复制对象时能否复制动态属性。默认情况下不复制动态属性。有关详细信息,请参阅Exclude Properties from Copy

数据类型: logical

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

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

数据类型: positive integer

属性 get 方法,以函数句柄形式返回。函数句柄引用与此属性关联的 get 方法。如果未指定 get 方法,则值为空。请参阅get 方法语法

数据类型: function_handle

属性 set 方法,以函数句柄形式返回。函数句柄引用与此属性关联的 set 方法。如果未指定 set 方法,则值为空。请参阅属性 set 方法

数据类型: function_handle

对于动态属性,始终为 false。动态属性不能定义默认值。

数据类型: logical

动态属性不支持验证。

数据类型: meta.Validation

动态属性不由类定义。

数据类型: 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.DynamicProperty 对象

使用 dynamicprops addprop 方法向对象添加动态属性并返回 meta.DynamicProperty 对象。通过设置 meta.DynamicPropertyHidden 属性来隐藏属性。

classdef MySimpleClass < dynamicprops
end
obj = MySimpleClass;
mdp = addprop(obj,'InstanceProp');
mdp.Hidden = true;

版本历史记录

在 R2008a 中推出