当前位置 : 主页 > 手机开发 > 其它 >

如何在面向对象的Matlab中定义派生属性

来源:互联网 收集:自由互联 发布时间:2021-06-19
我想要一个只读字段,我可以访问fv = object.field,但其中的值是 return是从对象的其他字段计算的(即返回值满足fv == f(object.field2)). 所需的功能与Python中的属性function / decorator相同. 我记得看
我想要一个只读字段,我可以访问fv = object.field,但其中的值是
return是从对象的其他字段计算的(即返回值满足fv == f(object.field2)).

所需的功能与Python中的属性function / decorator相同.

我记得看到一个引用,通过设置属性块的参数可以实现这一点,但是Matlab OOP文档非常分散,我再也找不到了.

这称为“依赖”属性.使用派生属性的类的快速示例如下:

classdef dependent_properties_example < handle       %Note: Deriving from handle is not required for this example.  It's just how I always use classes.
    properties (Dependent = true, SetAccess = private)
        derivedProp
    end
    properties (SetAccess = public, GetAccess = public)
        normalProp1 = 0;
        normalProp2 = 0;
    end
    methods
        function out = get.derivedProp(self)
            out = self.normalProp1 + self.normalProp2;
        end
    end
end

定义了这个类,我们现在可以运行:

>> x = dependent_properties_example;
>> x.normalProp1 = 3;
>> x.normalProp2 = 10;
>> x
x = 
  dependent_properties_example handle

  Properties:
    derivedProp: 13
    normalProp1: 3
    normalProp2: 10
网友评论