123456789101112131415161718192021222324252627282930313233 |
- class Observable:
- @staticmethod
- def create(source, parent=None):
- from . import ObservableDict
- from . import ObservableList
- if isinstance(source, ObservableDict):
- return source
- if isinstance(source, ObservableList):
- return source
- 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()
|