У меня есть класс, который отслеживает несколько других классов. Каждому из этих других классов необходимо получить доступ к значению конкретной переменной, и любой из этих других классов также должен иметь возможность модифицировать эту конкретную переменную, чтобы все другие классы могли видеть измененную переменную.
Я попытался выполнить это с помощью свойств. Пример следующий:
class A:
def __init__(self, state):
self._b_obj = B(self)
self._state = state
@property
def state(self):
return self._state
@state.setter
def state(self,val):
self._state = val
@property
def b_obj(self):
return self._b_obj
@b_obj.setter
def b_obj(self,val):
self._b_obj = val
class B:
def __init__(self, a_obj):
self.a_obj = a_obj
@property
def state(self):
return self.a_obj.state
@state.setter
def state(self,val):
self.a_obj.state = val
Я хочу, чтобы он работал следующим образом:
>>> objA = A(4)
>>> objB = objA.b_obj
>>> print objA.state
4
>>> print objB.state
4
>>> objA.state = 10
>>> print objA.state
10
>>> print objB.state
10
>>> objB.state = 1
>>> print objA.state
1
>>> print objB.state
1
Все работает так, как я хочу, за исключением последних трех команд. Они дают:
>>> objB.state = 1
>>> print objA.state
10
>>> print objB.state
1
Почему последние 3 команды возвращают эти значения? Как я могу исправить это, чтобы вернуть нужные значения?
Спасибо