Предизвикателства > International Whores' Day! > Решения > Решението на Гергана Панделиева

Резултати
1 точки от тестове
0 точки от учител

1 точки общо

7 успешни теста
0 неуспешни теста
Код

 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

Дискусия
История
Това решение има само една версия.