Module observable
source code
The observable module provides an interface and an optional mixin class that
provide an Observer pattern for attribute based change notifications of an
object.
An object that is Observable (i.e. provides the IObservable interface) will
allow attribute observers, a.k.a. listeners, to be attached or detached for
specific attribute names. These observers will be notified whenever the
specified attribute changes value.
Observers can be any Python object that is callable.
An example of using the observer pattern in your implementation is:
class MyObject(MyParentClass, ObservableMixin):
def __init__(self):
super(MyObject, self).__init__()
self.name = "Super Duper Object"
self.age = 42
def doIt(self):
self.name = "I changed my name!"
self.age = 37
def ageListener(observable, attrName, oldValue, newValue):
print "Age has been changed from %d to %d" % (oldValue, newValue)
foo = MyObject()
foo.attachAttributeObserver("age", ageListener)
foo.doIt()
This implementation will likely only work with new style classes that have been
properly implemented.
IObservable
Classes that implement the IObservable interface agree to provide
the Observer pattern for object attribute changes.
|
ObservableMixin
A mixin class that provides an implementation of the IObservable
interface for any new-style class to use.
|