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