微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MATLAB-仅列出子类提供的所有方法?

如何解决MATLAB-仅列出子类提供的所有方法?

| 我有一个从多个超类继承的类,我想获取该类具有的方法。天真地使用ѭ0返回来自我正在使用的类的方法以及超类方法,但是我对超类方法不感兴趣。 任何想法如何做到这一点?我在MATLAB文档中找不到任何内容。 谢谢!     

解决方法

        如果您的子类没有重新实现超类的任何方法(或者您可以忽略重新实现的方法也可以),则可以使用METHODS和SUPERCLASSES函数查找也不是的子类方法列表任何超类的方法。例如:
>> obj = \'hgsetget\';  %# A sample class name
>> supClasses = superclasses(obj)

supClasses = 

    \'handle\'    %# Just one superclass,but what follows should handle more

>> supMethods = cellfun(@methods,supClasses,...  %# Find methods of superclasses
                        \'UniformOutput\',false);
>> supMethods = unique(vertcat(supMethods{:}));  %# Get a unique list of
                                                 %#   superclass methods
>> subMethods = setdiff(methods(obj),supMethods)  %# Find methods unique to the
                                                  %#   subclass
subMethods = 

    \'get\'
    \'getdisp\'
    \'set\'
    \'setdisp\'
    ,        即使这个问题已经解决,我还是使用
meta.class
功能添加另一个答案:
%# some class name
clname = \'hgsetget\';

%# obtain class meta-info
mt = meta.class.fromName(clname);

%# get name of class defining each method
cdef = arrayfun(@(c)c.Name,[mt.MethodList.DefiningClass],\'Uniform\',false);

%# keep only methods that are defined in the subclass
subMethods = {mt.MethodList(ismember(cdef,clname)).Name}
此示例的结果:
subMethods = 
    \'set\'    \'get\'    \'setdisp\'    \'getdisp\'    \'empty\'
注意结果如何还包括所有非抽象类都具有的静态方法“ 5”(用于创建该类的空数组)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。