У меня есть класс в Python с геттерами и сеттерами, которые я хочу перевести на MATLAB - PullRequest
0 голосов
/ 14 апреля 2019

Как я могу перевести этот код в MATLAB?Даже если я использую методы получения и установки, как я могу вызвать функцию получения в MATLAB в последней функции?

class Celsius:
    def __init__(self, temperature = 0):
        self._temperature = temperature

    def to_fahrenheit(self):
        return (self.temperature * 1.8) + 32

    @property
    def temperature(self):
        return self._temperature

    @temperature.setter
    def temperature(self, value):
        self._temperature = value

1 Ответ

2 голосов
/ 14 апреля 2019

Вам не нужно определять сеттеры или геттеры для свойств в MATLAB.Преобразование вашего класса в MATLAB будет выглядеть следующим образом:

classdef Celsius
    properties
        temperature = 0
    end
    methods
        function obj = Celsius(temperature)
            if nargin < 1
                return
            end
            obj.temperature = temperature;
        end

        function val = toFahrenheit(obj)
            val = obj.temperature * 1.8 + 32;
        end
    end
end

Если вы хотите скрыть получатель свойств, вы можете добавить атрибут GetAccess:

    properties (GetAccess = private) % or `SetAccess = private` to hide the setter, and `Access = private` to hide both the setter and getter
        temperature = 0
    end

Чтобы использовать класс:

myCelsiusObject = Celsius(); % initialise the object with temperature = 0.
myCelsiusObject = celsius(10); % initiliase the object with temperature = 10.
currentTemperature = myCelsiusObject.temperature; % get the value of the temperature property.
currentFahrenheit = myCelsiusObject.toFahrenheit; % get fahrenheit.
myCelsiusObject.temperature = 1; % set the value of the temperature property to 1.

Еще о методах получения и установки в MATLAB

MATLAB имеет методы получения, но они используются как для так называемых Dependent свойств, значение которых равнорассчитывается автоматически в функции геттера.Подробнее об этом см. эту документацию .

Сеттеры в MATLAB могут использоваться в открытых свойствах для проверки входного значения.См. эту документацию

Я бы также рекомендовал вам прочитать полную документацию , если вы собираетесь больше заниматься объектно-ориентированным программированием в MATLAB.

...