Встречается на собеседованиях • сегодня

Какие методы метакласса (metaclass) вызываются в момент объявления самого класса

При объявлении класса вызываются следующие методы метакласса:

  1. __prepare__ (необязательный) - вызывается первым, возвращает пространство имён (обычно dict) для хранения атрибутов класса. Позволяет кастомизировать хранилище атрибутов.
python
@classmethod
def __prepare__(metacls, name, bases, **kwargs):
    return OrderedDict()
  1. __new__ - создаёт и возвращает новый класс. Получает метакласс, имя класса, кортеж базовых классов и пространство имён (из __prepare__).
python
def __new__(metacls, name, bases, namespace, **kwargs):
    return super().__new__(metacls, name, bases, namespace)
  1. __init__ - инициализирует созданный класс. Аналогичен обычному __init__, но для классов.
python
def __init__(cls, name, bases, namespace, **kwargs):
    super().__init__(name, bases, namespace)

Порядок вызова: __prepare____new____init__. Эти методы позволяют полностью контролировать процесс создания класса.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы