1class Slot:
2 def __init__(self, object_limit=None, size_limit=None):
3 self.object_limit = object_limit
4 self.size_limit = size_limit
5
6 def __set_name__(self, owner, name):
7 self.name = name
8
9 def _get_storage(self, instance):
10 if self.name not in instance.__dict__:
11 instance.__dict__[self.name] = []
12 return instance.__dict__[self.name]
13
14 def __get__(self, instance, owner):
15 if instance is None:
16 return self
17 return tuple(self._get_storage(instance))
18
19 def __set__(self, instance, value):
20 storage = self._get_storage(instance)
21 if self.object_limit is not None:
22 if len(storage) + 1 > self.object_limit:
23 raise ValueError("Това да не ти е склад бре")
24
25 if self.size_limit is not None:
26 current_size = sum(len(obj) for obj in storage)
27 if current_size + len(value) > self.size_limit:
28 raise ValueError("Е сега вече прекали")
29 storage.append(value)
30
31 def __delete__(self, instance):
32 storage = self._get_storage(instance)
33 if storage:
34 storage.pop(0)
.......
----------------------------------------------------------------------
Ran 7 tests in 0.000s
OK