Matlab中类似Python的属性访问_

2024-10-01 13:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在Matlab中创建一个类,该类将模仿python中的以下代码(在类定义中),但无法找出使其工作所需的语法和/或权限:

@property
def prop(self):
    return self._prop

@prop.setter
def prop(self, value)"
    'some code'
    self._prop = value

def readprop(self)
    self._prop = 'some code'

要点是readprop方法不调用setter方法,而是设置参数的值。你知道吗


Tags: 方法代码self权限定义valuedef语法
2条回答

据我所知,这是不支持的,最好的办法是使用两个属性对其进行破解:

classdef A < handle
    properties
        prop %external property for get and set values
    end
    properties (Access=private)
        prop_ %property which is really used to store the data
    end
    methods 
        function set.prop(obj,x)
            disp('s');
            obj.prop_=x; %write to the other property instead
        end
        function x=get.prop(obj)
            disp('g');
            %obj.prop=obj.prop_;
            x=obj.prop_;
        end
        function readprop(self)
            self.prop_=42;
        end
    end
end

下面是另一个解决方案,它是对我关于Reddit的问题的回答:

function set.prop(obj, value)
    caller = dbstack;
    if ~isempty(strained(caller(size(caller,1)).name, 'set.prop')
       'do code'
    end
    obj.prop = value
end

此代码将检查最后调用的函数是setter还是其他函数,并相应地执行操作。你知道吗

相关问题 更多 >