Алтухов Егор, 321 группа SlotGen 7665
Омаров Микаил, 321 группа SlotGen 7671
f1from itertools import productf1from itertools import product
2import string2import string
33
4def slotgen(number):4def slotgen(number):
55
n6    def decorator(cls):n6    def decor(cls):
7        orig_attrs = {kv for kv in cls.__dict__.items() if not k.sta7        orig_at = {ij for ij in cls.__dict__.items() if not i.starts
>rtswith('__')}>with('__')}
8        letters = string.ascii_lowercase8        let = string.ascii_lowercase
9        L = 19        l = 1
10        while len(letters) ** L < number:10        while len(let) ** l < number:
11            L += 111            l += 1
12        names = (''.join(p) for p in product(letters, repeat=L))12        names = (''.join(i) for i in product(let, repeat=l))
13        slots = [next(names) for _ in range(number)]13        slots = [next(names) for _ in range(number)]
n14        new_attrs = dict(cls.__dict__)n14        new_at = dict(cls.__dict__)
15        for name in slots:15        for name in slots:
t16            if name in new_attrs:t16            if name in new_at:
17                del new_attrs[name]17                del new_at[name]
18        new_attrs['__slots__'] = slots18        new_at['__slots__'] = slots
19        new_attrs.pop('__dict__', None)19        new_at.pop('__dict__', None)
20        new_attrs.pop('__weakref__', None)20        new_at.pop('__weakref__', None)
21        for kv in orig_attrs.items():21        for ij in orig_at.items():
22            if k not in slots:22            if i not in slots:
23                new_attrs[k] = v23                new_at[i] = j
24        return type(cls.__name__, cls.__bases__, new_attrs)24        return type(cls.__name__, cls.__bases__, new_at)
25    return decorator25    return decor
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op