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

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

1 точки общо

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

 1from collections import deque
 2
 3
 4class Slot:
 5    def __init__(self, object_limit=None, size_limit=None):
 6        self.object_limit = object_limit
 7        self.size_limit = size_limit
 8
 9    def __set_name__(self, owner, name):
10        self.name = f"_{name}_slot"
11
12    def __get__(self, obj, owner):
13        if obj is None:
14            return self
15        return tuple(obj.__dict__.get(self.name, deque()))
16
17    def __set__(self, obj, value):
18        objects = obj.__dict__.setdefault(self.name, deque())
19
20        if self.object_limit is not None and len(objects) + 1 > self.object_limit:
21            raise ValueError("Slot object limit exceeded")
22
23        current_size = sum(len(item) for item in objects)
24        if self.size_limit is not None and current_size + len(value) > self.size_limit:
25            raise ValueError("Slot size limit exceeded")
26
27        objects.append(value)
28
29    def __delete__(self, obj):
30        objects = obj.__dict__.get(self.name, deque())
31        if objects:
32            objects.popleft()

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

OK

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