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

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

1 точки общо

6 успешни теста
1 неуспешни теста
Код

 1class Slot:
 2    def __init__(self, object_limit=None, size_limit=None):
 3        self._items = []
 4        self.object_limit = object_limit
 5        self.size_limit = size_limit
 6
 7    def __get__(self, instance, owner):
 8        for obj, items in self._items:
 9            if obj is instance:
10                return tuple(items)
11        return tuple()
12
13    def __set__(self, instance, value):
14        for obj, items in self._items:
15            if obj is instance:
16                if self.object_limit is not None and len(items) + 1 > self.object_limit:
17                    raise ValueError("Too many")
18                if self.size_limit is not None and sum(len(item) for item in items) + len(value) > self.size_limit:
19                    raise ValueError("Too big")
20                items.append(value)
21                return
22        if self.object_limit is not None and 1 > self.object_limit:
23            raise ValueError("Too many")
24        if self.size_limit is not None and len(value) > self.size_limit:
25            raise ValueError("Too big")
26        self._items.append((instance, [value]))
27    
28    def __delete__(self, instance):
29        for obj, items in self._items:
30            if obj is instance and items:
31                 del items[0]
32                 return

F......
======================================================================
FAIL: test_accessing_slot_through_class_returns_descriptor (test.TestSlot.test_accessing_slot_through_class_returns_descriptor)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 22, in test_accessing_slot_through_class_returns_descriptor
self.assertIsInstance(BasicWhore.front, Slot)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: () is not an instance of <class 'solution.Slot'>

----------------------------------------------------------------------
Ran 7 tests in 0.001s

FAILED (failures=1)

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