Имя установщика должно совпадать с именем свойства.
@measurement.setter
def measurement(self, measure):
self._measurement = measure
self.log.append(self._measurement)
, поскольку экземпляру property
, возвращаемому measurement.setter
, присвоено имя measurement
. С вашим кодом у вас теперь есть два отдельных свойства: одно (только для чтения) свойство с именем measurement
и одно с именем measurement_set
.
Сеттер не предназначен для непосредственного вызова (и не можетпотому что имя больше не относится к вызываемому объекту, но к свойству). Когда вы пишете self.measurement_set(10)
, атрибут доступа self.measurement_set
возвращает (через геттер) текущее int
значение self._measurement
, а затем пытается вызвать его с аргументом 10.
Вместо этого выпросто присваивайте свойству напрямую, что вызывает вызов метода установки.
s.measurement = 10
s.measurement = 20