Алмаз Сейтхазин (КФ МГУ, кафедра НДС) ClassCounter 10837
david_Yakhin_312 ClassCounter 10840
t1class Generative(type):t1class Generative(type):
2    _counter = 02    _counter = 0
33
4    class _GenerationDescriptor:4    class _GenerationDescriptor:
55
6        def __get__(self, obj, owner=None):6        def __get__(self, obj, owner=None):
7            if owner is None:7            if owner is None:
8                return None8                return None
9            meta = owner.__class__9            meta = owner.__class__
10            return getattr(meta, '_counter', None)10            return getattr(meta, '_counter', None)
1111
12        def __set__(self, obj, value):12        def __set__(self, obj, value):
13            raise AttributeError("can't set attribute 'generation'")13            raise AttributeError("can't set attribute 'generation'")
1414
15        def __delete__(self, obj):15        def __delete__(self, obj):
16            raise AttributeError("can't delete attribute 'generation'")16            raise AttributeError("can't delete attribute 'generation'")
1717
18    def __new__(mcls, name, bases, namespace, **kwargs):18    def __new__(mcls, name, bases, namespace, **kwargs):
19        cls = super().__new__(mcls, name, bases, namespace, **kwargs)19        cls = super().__new__(mcls, name, bases, namespace, **kwargs)
20        mcls._counter += 120        mcls._counter += 1
21        type.__setattr__(cls, 'generation', mcls._GenerationDescriptor()21        type.__setattr__(cls, 'generation', mcls._GenerationDescriptor()
>)>)
22        return cls22        return cls
2323
24    def __setattr__(cls, name, value):24    def __setattr__(cls, name, value):
25        if name == 'generation':25        if name == 'generation':
26            raise AttributeError("can't set attribute 'generation'")26            raise AttributeError("can't set attribute 'generation'")
27        super().__setattr__(name, value)27        super().__setattr__(name, value)
2828
29    def __delattr__(cls, name):29    def __delattr__(cls, name):
30        if name == 'generation':30        if name == 'generation':
31            raise AttributeError("can't delete attribute 'generation'")31            raise AttributeError("can't delete attribute 'generation'")
32        super().__delattr__(name)32        super().__delattr__(name)
3333
34class Generative(type):34class Generative(type):
35    _counter = 035    _counter = 0
3636
37    class _GenerationDescriptor:37    class _GenerationDescriptor:
3838
39        def __get__(self, obj, owner=None):39        def __get__(self, obj, owner=None):
40            if owner is None:40            if owner is None:
41                return None41                return None
42            meta = owner.__class__42            meta = owner.__class__
43            return getattr(meta, '_counter', None)43            return getattr(meta, '_counter', None)
4444
45        def __set__(self, obj, value):45        def __set__(self, obj, value):
46            raise AttributeError("can't set attribute 'generation'")46            raise AttributeError("can't set attribute 'generation'")
4747
48        def __delete__(self, obj):48        def __delete__(self, obj):
49            raise AttributeError("can't delete attribute 'generation'")49            raise AttributeError("can't delete attribute 'generation'")
5050
51    def __new__(mcls, name, bases, namespace, **kwargs):51    def __new__(mcls, name, bases, namespace, **kwargs):
52        cls = super().__new__(mcls, name, bases, namespace, **kwargs)52        cls = super().__new__(mcls, name, bases, namespace, **kwargs)
53        mcls._counter += 153        mcls._counter += 1
54        type.__setattr__(cls, 'generation', mcls._GenerationDescriptor()54        type.__setattr__(cls, 'generation', mcls._GenerationDescriptor()
>)>)
55        return cls55        return cls
5656
57    def __setattr__(cls, name, value):57    def __setattr__(cls, name, value):
58        if name == 'generation':58        if name == 'generation':
59            raise AttributeError("can't set attribute 'generation'")59            raise AttributeError("can't set attribute 'generation'")
60        super().__setattr__(name, value)60        super().__setattr__(name, value)
6161
62    def __delattr__(cls, name):62    def __delattr__(cls, name):
63        if name == 'generation':63        if name == 'generation':
64            raise AttributeError("can't delete attribute 'generation'")64            raise AttributeError("can't delete attribute 'generation'")
65        super().__delattr__(name)65        super().__delattr__(name)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op