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