如何确定属性是从超类继承还是直接在类定义中定义?假设obj
是该类的实例,我尝试过:
properties(obj)
metaclass(obj)
答案 0 :(得分:2)
metaclass
返回一个meta.class
对象,其中包含有关要查询的类的信息。此<p id="a">random text</p>
<p id="b">more random text</p>
<button onclick="myFunction()">alert</button>
对象的有用属性是meta.class
,其中包含有关该类所有属性的信息,包括PropertyList
。
使用以下类定义作为示例:
DefiningClass
和
classdef asuperclass
properties
thesuperproperty
end
end
我们现在可以查询classdef aclass < asuperclass
properties
theclassproperty
end
end
的属性以确定它们的来源:
aclass
返回:
tmp = ?aclass;
fprintf('Class Properties: %s, %s\n', tmp.PropertyList.Name)
fprintf('''theclassproperty'' defined by: %s\n', tmp.PropertyList(1).DefiningClass.Name)
fprintf('''thesuperproperty'' defined by: %s\n', tmp.PropertyList(2).DefiningClass.Name)
您可以将其包装成一个简单的辅助函数。例如:
Class Properties: theclassproperty, thesuperproperty
'theclassproperty' defined by: aclass
'thesuperproperty' defined by: asuperclass