MATLAB:当我尝试访问对象的属性时出错

Posted

技术标签:

【中文标题】MATLAB:当我尝试访问对象的属性时出错【英文标题】:MATLAB: error when I try to access property of object 【发布时间】:2014-02-05 06:12:05 【问题描述】:

这是它返回的错误: 你不能得到 Planet 的 't' 属性。

Problem4dot10 中的错误(第 12 行) 名称=mercury.t(水星);

我创建了 getter 函数来返回行星类的属性:

methods %for getter functions
        function t=get.t(obj)
            t=obj.t;
        end
        function r=get.r(obj)
            r=obj.r;
        end
        function x=get.x(obj)
            x=obj.x;
        end
        function y=get.y(obj)
            y=obj.y;
        end
        function vx=get.vx(obj)
            vx=obj.vx;
        end
        function vy=get.vy(obj)
            vy=obj.vy;
        end
        function n=get.n(obj)
            n=obj.n;
        end
        function n=get.Name(obj)
            n=obj.Name;
        end
    end

我从 Problem4dot10.m 文件中调用了 getter:

mercury=Planet(1,0.002,0,2*pi,1,0,'Mercury');
mercury.sett(60);
name=mercury.t(mercury);

我查看了文档以试图弄清楚。我想做的是创建一个行星类来跟踪行星的位置,并计算行星在下一个时间步的位置。然后它假定新的状态。

【问题讨论】:

能否更新示例以包含属性定义? 【参考方案1】:

在我看来,t 属性是私有的。您可以使用以下方式将其公开,例如:

properties(SetAccess = public, GetAccess = public)
    t = 0;
end

properties(Access = public)
    t = 0;
end

您也不需要将mercury 传递给 t getter 方法。 name=mercury.t; 应该够了。

【讨论】:

以上是关于MATLAB:当我尝试访问对象的属性时出错的主要内容,如果未能解决你的问题,请参考以下文章

在Laravel 5.6中尝试获取非对象属性时出错

尝试初始化嵌套数组时出错“赋值表达式的左侧可能不是可选的属性访问。”

使用 QDBusInterface 获取 DBus 接口属性时出错

尝试访问 PFUser 子类的动态属性时出错

从库中访问属性时出错

尝试访问 Thymeleaf 表单中的验证错误时出错