Junior — Middle
65
Какие вызовы методов метакласса происходят в процессе определения нового класса?
Answer from AI
sobes.tech AI
При определении нового класса в Python метакласс управляет процессом создания класса. Основные вызовы методов метакласса происходят в следующем порядке:
-
__new__— вызывается для создания нового объекта класса (то есть самого класса). Здесь можно изменить или подготовить атрибуты класса перед созданием. -
__init__— инициализирует созданный объект класса, обычно используется для дополнительной настройки. -
__call__— вызывается при создании экземпляров нового класса, но это уже после определения класса.
Пример упрощённого метакласса:
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"Создаём класс {name}")
return super().__new__(cls, name, bases, dct)
def __init__(cls, name, bases, dct):
print(f"Инициализируем класс {name}")
super().__init__(name, bases, dct)
class MyClass(metaclass=Meta):
pass
При запуске будет:
Создаём класс MyClass
Инициализируем класс MyClass
Таким образом, в процессе определения нового класса вызываются методы __new__ и __init__ метакласса.