Установщики свойств для составного присваивания?

Рассмотрим следующий простой пример класса, у которого есть свойство, которое предоставляет измененную версию некоторых внутренних данных при вызове:

class Foo(object):
    def __init__(self, value, offset=0):
        self._value = value
        self.offset = offset

    @property
    def value(self):
        return self._value + self.offset

    @value.setter
    def value(self, value):
        self._value = value

value.setter отлично работает для обычного присваивания , но, конечно, не работает для составного присваивания:

>>> x = Foo(3, 2)
>>> x.value
5
>>> x.value = 2
>>> x.value
4
>>> x.value += 5
>>> x.value
11

Желаемое поведение состоит в том, что x.value + = 5 должно быть эквивалентно x.value = x._value + 5 , в отличие от x.value = x.value + 5 . Есть ли способ добиться этого (с помощью интерфейса свойств) исключительно в классе Foo ?

5
задан ezod 24 July 2011 в 15:56
поделиться