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

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

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

  1. __prepare__(metacls, name, bases, **kwargs) - вызывается первым, создает пространство имен для класса (возвращает dict-like объект). Необязательный метод.

  2. __new__(metacls, name, bases, namespace, **kwargs) - создает и возвращает новый класс. Здесь можно модифицировать атрибуты класса до его создания.

  1. __init__(cls, name, bases, namespace, **kwargs) - инициализирует созданный класс. Аналог __init__ для обычных классов.

Пример:

python
class Meta(type):
    @classmethod
    def __prepare__(metacls, name, bases, **kwargs):
        print("__prepare__")
        return {}

    def __new__(metacls, name, bases, namespace, **kwargs):
        print("__new__")
        return super().__new__(metacls, name, bases, namespace)

    def __init__(cls, name, bases, namespace, **kwargs):
        print("__init__")
        super().__init__(name, bases, namespace)

class MyClass(metaclass=Meta):
    pass

Вывод:

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

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

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

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