This sounds like a good place for the pub/sub technique, where you have objects watch for changes. This is useful in things like GUIs, when you need to update some widget whenever the value it displays changes.
Something very simple:
>>> class Widget(object):
def __init__(self, name, val):
self.name = name
self.val = val
def update(self, val):
self.val = val
print self.name, "changed to", self.val
>>> def update(updateables, val):
for u in updateables:
u(val)
>>> w1, w2 = Widget("Alpha", 5), Widget("Beta", 6)
>>> updateables = [w1.update, w2.update]
>>> update(updateables, 17)
Alpha changed to 17
Beta changed to 17
The idea is that "observers" of the value register a callback, which gets invoked whenever that value changes.