Сагдиев Айрат, 321 группа ClassCounter 11377
s02220725 ClassCounter 9695
t1class Generative(type):t1class Generative(type):
2    _generation_counter = 02    _generation_counter = 0
33
4    def __new__(mcs, name, bases, namespace, **kwargs):4    def __new__(mcs, name, bases, namespace, **kwargs):
5        mcs._generation_counter += 15        mcs._generation_counter += 1
6        cls = super().__new__(mcs, name, bases, namespace, **kwargs)6        cls = super().__new__(mcs, name, bases, namespace, **kwargs)
7        super().__setattr__(cls, 'generation', GenerationDescriptor(mcs)7        super().__setattr__(cls, 'generation', GenerationDescriptor(mcs)
>)>)
8        return cls8        return cls
99
10    def __setattr__(cls, name, value):10    def __setattr__(cls, name, value):
11        if name == 'generation':11        if name == 'generation':
12            raise AttributeError("Cannot set attribute 'generation'")12            raise AttributeError("Cannot set attribute 'generation'")
13        super().__setattr__(cls, name, value)13        super().__setattr__(cls, name, value)
1414
15    def __delattr__(cls, name):15    def __delattr__(cls, name):
16        if name == 'generation':16        if name == 'generation':
17            raise AttributeError("Cannot delete attribute 'generation'")17            raise AttributeError("Cannot delete attribute 'generation'")
18        super().__delattr__(cls, name)18        super().__delattr__(cls, name)
1919
20class GenerationDescriptor:20class GenerationDescriptor:
2121
22    def __init__(self, metaclass):22    def __init__(self, metaclass):
23        self.metaclass = metaclass23        self.metaclass = metaclass
2424
25    def __get__(self, obj, objtype=None):25    def __get__(self, obj, objtype=None):
26        return self.metaclass._generation_counter26        return self.metaclass._generation_counter
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op