https://dev.kronoz.win/r/marzneshin.git
1class MemoryStorage:
2 def __init__(self):
3 self._data = {}
4
5 def set(self, key, value):
6 self._data[key] = value
7
8 def get(self, key, default=None):
9 return self._data.get(key, default)
10
11 def delete(self, key):
12 self._data.pop(key, None)
13
14 def clear(self):
15 self._data.clear()
16
17
18class ListStorage(list):
19 def __init__(self, update_func):
20 super().__init__()
21 self.update_func = update_func
22
23 def __getitem__(self, index):
24 if not self:
25 self.update()
26
27 return super().__getitem__(index)
28
29 def __iter__(self):
30 if not self:
31 self.update()
32
33 return super().__iter__()
34
35 def __str__(self):
36 if not self:
37 self.update()
38
39 return super().__str__()
40
41 def update(self):
42 self.update_func(self)
43
44
45class DictStorage(dict):
46 def __init__(self, update_func):
47 super().__init__()
48 self.update_func = update_func
49
50 def __getitem__(self, key):
51 if not self:
52 self.update()
53
54 return super().__getitem__(key)
55
56 def __iter__(self):
57 if not self:
58 self.update()
59
60 return super().__iter__()
61
62 def __str__(self):
63 if not self:
64 self.update()
65
66 return super().__str__()
67
68 def values(self):
69 if not self:
70 self.update()
71
72 return super().values()
73
74 def keys(self):
75 if not self:
76 self.update()
77
78 return super().keys()
79
80 def get(self, key, default=None):
81 if not self:
82 self.update()
83
84 return super().get(key, default)
85
86 def update(self):
87 self.update_func(self)