1234567891011121314151617181920212223242526272829 |
- class Observable:
- @staticmethod
- def create(source, parent=None):
- from . import ObservableDict
- from . import ObservableList
- if isinstance(source, dict):
- return ObservableDict(source, parent)
- if isinstance(source, list):
- return ObservableList(source, parent)
- else:
- return source
- def __init__(self, parent):
- self.__parent = parent
- self.__subscriptions = []
- def subscribe(self, handler, immediate=False):
- self.__subscriptions.append(handler)
- if immediate:
- handler(self)
- def _notify(self):
- for s in self.__subscriptions:
- s(self)
- if self.__parent is not None:
- self.__parent._notify()
|