Dimitry ClassCounter 10013
Aleksey ClassCounter 10726
n1class _GenView:n1class _GenAccessor:
22
n3    def __get__(self, inst, owner=None):n3    def __get__(self, instance, owner=None):
4        return type(owner)._gen_id4        return type(owner)._cnt
55
n6    def __set__(self, inst, val):n6    def __set__(self, instance, value):
7        raise AttributeError('generation is read-only')7        raise AttributeError('Генерация доступна только для чтения')
88
n9    def __delete__(self, inst):n9    def __delete__(self, instance):
10        raise AttributeError('generation is read-only')10        raise AttributeError('Генерация доступна только для чтения')
1111
12class Generative(type):12class Generative(type):
n13    _gen_id = 0n13    _cnt = 0
1414
n15    def __new__(mcls, name, parents, namespace, **opts):n15    def __new__(meta, cls_name, bases, attrs, **kw):
16        obj = super().__new__(mcls, name, parents, namespace)16        new_cls = super().__new__(meta, cls_name, bases, attrs)
17        mcls._gen_id += 117        meta._cnt += 1
18        type.__setattr__(obj, 'generation', _GenView())18        type.__setattr__(new_cls, 'generation', _GenAccessor())
19        return obj19        return new_cls
2020
n21    def __setattr__(cls, key, val):n21    def __setattr__(cls, at, value):
22        if key == 'generation':22        if at == 'generation':
23            raise AttributeError('generation is read-only')23            raise AttributeError('Генерация доступна только для чтения')
24        return super().__setattr__(key, val)24        return super().__setattr__(at, value)
2525
t26    def __delattr__(cls, key):t26    def __delattr__(cls, at):
27        if key == 'generation':27        if at == 'generation':
28            raise AttributeError('generation is read-only')28            raise AttributeError('Генерация доступна только для чтения')
29        return super().__delattr__(key)29        return super().__delattr__(cls, at)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op