Предизвикателства > 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        self.data = {}
 6
 7    def __get__(self, instance, owner):
 8        if instance is None:
 9            return self
10
11        return tuple(self.data.get(instance, []))
12
13    def __set__(self, instance, value):
14        if instance not in self.data:
15            self.data[instance] = []
16
17        items = self.data[instance]
18
19        if (
20            self.object_limit is not None
21            and len(items) + 1 > self.object_limit
22        ):
23            raise ValueError("Object limit exceeded")
24
25        if self.size_limit is not None:
26            total_size = sum(len(item) for item in items)
27
28            if total_size + len(value) > self.size_limit:
29                raise ValueError("Size limit exceeded")
30
31        items.append(value)
32
33    def __delete__(self, instance):
34        items = self.data.get(instance, [])
35
36        if items:
37            items.pop(0)

.......
----------------------------------------------------------------------
Ran 7 tests in 0.000s

OK

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