动态属性-向实例添加属性
什么是动态属性
类派生的类的实例中添加属性dynamicprops
类。这些动态属性有时被称为实例属性。使用动态属性将临时数据附加到对象,或将数据分配给希望与类的实例关联的数据,但不是该类的所有对象。
可以有多个程序在同一个对象上定义动态属性。在这些情况下,避免名称冲突。动态属性名必须是有效的MATLAB®标识符(见变量名),并且不能与类的方法名称相同。
动力特性特性
一旦定义,动态属性的行为就很像类定义的属性:
使用点表示法设置和查询动态属性的值。(见将数据分配给动态属性.)
当您保存和加载动态属性所附加的对象时,MATLAB会保存和加载动态属性。(见动态属性和ConstructOnLoad.)
为动态属性定义属性。(见设置动态属性).
默认情况下,动态属性有它们的
NonCopyable
属性设置为真正的
.如果复制包含动态属性的对象,则不会复制动态属性。(见具有动态属性的对象)添加属性集和获取访问方法。(见设置和获取依赖属性的方法.)
监听动态属性事件。(见动态属性事件.)
使用受限制的语法从对象数组中访问动态属性值。(见访问数组中的动态属性.)
的
isequal
函数总是返回假
当比较具有动态属性的对象时,即使属性具有相同的名称和值。要比较包含动态属性的对象,请重载isequal
你的课。
定义动态属性
类的子类的任何类dynamicprops
类的子类处理
类定义动态属性)addprop
方法。语法为:
P = addprop(H,'PropertyName')
地点:
P
的数组。元。DynamicProperty
对象
H
是句柄数组吗
PropertyName
是要添加到每个对象的动态属性的名称吗
命名动态属性
在命名动态属性时只使用有效的名称(参见变量名).此外,不使用这样的名字:
是否与类方法的名称相同
是否与类事件的名称相同
包含句点(
.
)是支持数组功能的函数名:金宝app
空
,转置
,ctranspose
,交换
,重塑
,显示
,disp
,细节
,或排序
.
设置动态属性
要设置属性属性,请使用元。DynamicProperty
与动态属性关联的对象。例如,如果P
返回的对象是addprop
,此语句设置属性的隐藏的
属性来真正的
:
P.Hidden = true;
属性属性常数
而且摘要
对动态属性没有意义。将这些属性的值设置为真正的
没有效果。
删除动态属性
通过删除其来删除动态属性元。DynamicProperty
对象:
删除(P);
将数据分配给动态属性
假设,您正在使用一组预定义的用户界面小部件类(按钮、滑块、复选框等)。您希望存储小部件类的每个实例的位置。假设小部件类不是为存储特定布局方案的位置数据而设计的。您希望避免创建映射或哈希表来单独维护此信息。
假设按钮
类的子类dynamicprops
,添加一个动态属性来存储布局数据。下面是一个简单的类来创建uicontrol
按钮:
classdef按钮< dynamicprops属性UiHandle结束方法函数Obj =按钮(pos)如果Nargin > 0如果长度(pos) == 4 obj。UiHandle = uicontrol(“位置”、pos、...“风格”,“按钮”);其他的错误(“位置不当”)结束结束结束结束结束
类的实例按钮
类,添加一个动态属性,并设置其值:
B1 =按钮([20 40 80 20]);b1.addprop (“myCoord”);b1.myCoord= [2,3];
访问动态属性就像访问其他属性一样,但只能在你定义它的对象上:
b1.myCoord
Ans = 2 3
动态属性的访问属性
不建议使用动态属性的非公共访问,因为这些属性属于通常在类方法之外创建的特定实例。动态属性的Access属性应用于包含该动态属性的实例的类。动态属性Access属性不一定应用于其方法添加动态属性的类。
例如,如果基类方法添加具有对实例的私有访问的动态属性,则私有访问仅应用于实例的类。
有关动态属性属性的更多信息,请参见元。DynamicProperty
.使用手柄findprop
方法来获取元。DynamicProperty
对象。