6
0

ObservableDict.py 909 B

12345678910111213141516171819202122232425262728293031
  1. from . import Observable
  2. class ObservableDict(dict, Observable):
  3. def __init__(self, obj: dict, parent: Observable = None, key: str = None):
  4. dict.__init__(self)
  5. Observable.__init__(self, parent, key)
  6. for key in obj.keys():
  7. dict.__setitem__(self, key, Observable.create(obj[key], self, key))
  8. def __setitem__(self, key, value):
  9. dict.__setitem__(self, key, Observable.create(value, self, key))
  10. Observable.notify(self, [key])
  11. def __delitem__(self, key):
  12. super().__delitem__(key)
  13. Observable.notify(self, [key])
  14. def copy(self):
  15. result = {}
  16. for key in self.keys():
  17. if type(self[key]) == ObservableDict or type(self[key]) == ObservableList:
  18. result[key] = self[key].copy()
  19. else:
  20. result[key] = self[key]
  21. return result
  22. from . import ObservableList