查找matlab类方法的继承属性

时间:2017-08-06 14:53:45

标签: matlab oop

如何确定属性是从超类继承还是直接在类定义中定义?假设obj是该类的实例,我尝试过:

properties(obj)
metaclass(obj)

1 个答案:

答案 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