lalala33rfs

Untitled

Nov 17th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.88 KB | None | 0 0
  1. from copy import deepcopy
  2.  
  3.  
  4. class Storage:
  5.     def __init__(self):
  6.         self._dict = dict()
  7.  
  8.     def __getitem__(self, item):
  9.         return self._dict[item]
  10.  
  11.     def edit(self):
  12.         return self.ContextManager(self)
  13.  
  14.     class ContextManager:
  15.         def __init__(self, storage):
  16.             self.storage = storage
  17.             self.copy_dict = deepcopy(storage._dict)
  18.  
  19.         def __enter__(self):
  20.             return self
  21.  
  22.         def __exit__(self, exc_type, exc_val, exc_tb):
  23.             if exc_type:
  24.                 # raise
  25.                 return True
  26.  
  27.             self.storage._dict = self.copy_dict
  28.             return True
  29.  
  30.         def __getitem__(self, key):
  31.             return self.copy_dict[key]
  32.  
  33.         def __setitem__(self, key, value):
  34.             self.copy_dict[key] = value
  35.  
  36.         def __delitem__(self, key):
  37.             del self.copy_dict[key]
Add Comment
Please, Sign In to add comment