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)