| n | class _GenAccessor: | n | class GenerationDescriptor: |
| | | |
| n | def __get__(self, inst, owner): | n | def __get__(self, instance, owner): |
| return owner.__class__._counter | | return type(owner)._count |
| | | |
| class Generative(type): | | class Generative(type): |
| n | _counter = 0 | n | _count = 0 |
| | | |
| n | def __init__(self, nm, bases, ns): | n | def __init__(cls, name, bases, namespace): |
| super().__init__(nm, bases, ns) | | super().__init__(name, bases, namespace) |
| type(self)._counter += 1 | | type(cls)._count += 1 |
| type.__setattr__(self, 'generation', _GenAccessor()) | | type.__setattr__(cls, 'generation', GenerationDescriptor()) |
| | | |
| n | def __setattr__(self, key, val): | n | def __setattr__(self, name, value): |
| if key == 'generation': | | if name == 'generation': |
| raise AttributeError('cannot modify generation') | | raise AttributeError('cannot set generation') |
| return super().__setattr__(key, val) | | super().__setattr__(name, value) |
| | | |
| n | def __delattr__(self, key): | n | def __delattr__(self, name): |
| if key == 'generation': | | if name == 'generation': |
| raise AttributeError('cannot delete generation') | | raise AttributeError('cannot delete generation') |
| t | return super().__delattr__(key) | t | super().__delattr__(name) |