Лукьянов Артём Васильевич, 317, Севастопольский филилал SlotGen 8510
Сагура Николай, 392, сев. филиал SlotGen 7658
t1def slotgen(number):t1def slotgen(number):
2    letters = 'abcdefghijklmnopqrstuvwxyz'2    letters = 'abcdefghijklmnopqrstuvwxyz'
3    base = len(letters)3    base = len(letters)
44
5    def decorator(cls):5    def decorator(cls):
6        L = 16        L = 1
7        power = base7        power = base
8        while power < number:8        while power < number:
9            L += 19            L += 1
10            power *= base10            power *= base
1111
12        def index_to_name(i):12        def index_to_name(i):
13            chars = []13            chars = []
14            for _ in range(L):14            for _ in range(L):
15                chars.append(letters[i % base])15                chars.append(letters[i % base])
16                i //= base16                i //= base
17            chars.reverse()17            chars.reverse()
18            return ''.join(chars)18            return ''.join(chars)
1919
20        def name_to_index(name):20        def name_to_index(name):
21            if len(name) != L:21            if len(name) != L:
22                return None22                return None
23            idx = 023            idx = 0
24            for ch in name:24            for ch in name:
25                pos = ord(ch) - 9725                pos = ord(ch) - 97
26                if pos < 0 or pos >= base:26                if pos < 0 or pos >= base:
27                    return None27                    return None
28                idx = idx * base + pos28                idx = idx * base + pos
29            return idx29            return idx
30        slots = tuple((index_to_name(i) for i in range(number)))30        slots = tuple((index_to_name(i) for i in range(number)))
31        new_dict = {}31        new_dict = {}
32        for name, value in cls.__dict__.items():32        for name, value in cls.__dict__.items():
33            if name.startswith('__'):33            if name.startswith('__'):
34                continue34                continue
35            idx = name_to_index(name)35            idx = name_to_index(name)
36            if idx is not None and idx < number:36            if idx is not None and idx < number:
37                continue37                continue
38            new_dict[name] = value38            new_dict[name] = value
39        new_dict['__slots__'] = slots39        new_dict['__slots__'] = slots
40        return type(cls.__name__, cls.__bases__, new_dict)40        return type(cls.__name__, cls.__bases__, new_dict)
41    return decorator41    return decorator
42'\n@slotgen(29)\nclass C:\n    field = 12\n    ab = 100500\n\nc = C()\nc42'\n@slotgen(29)\nclass C:\n    field = 12\n    ab = 100500\n\nc = C()\nc
>.ba = 100500\nfor attr in "aa ab field ba".split():\n    try:\n        p>.ba = 100500\nfor attr in "aa ab field ba".split():\n    try:\n        p
>rint(f"{attr}={getattr(c, attr)}")\n    except AttributeError:\n        >rint(f"{attr}={getattr(c, attr)}")\n    except AttributeError:\n        
>print(f"No {attr}")\n'>print(f"No {attr}")\n'
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op