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

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

Метакласс управляет созданием класса, и при этом вызываются следующие методы:

  1. __prepare__(cls, name, bases, **kwargs) (опциональный) — вызывается первым, возвращает пространство имён (обычно dict) для хранения атрибутов класса.
  2. __new__(mcls, name, bases, namespace, **kwargs) — создаёт и возвращает новый класс.
  3. __init__(cls, name, bases, namespace, **kwargs) — инициализирует созданный класс.

Пример:

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

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

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

class MyClass(metaclass=Meta):
    pass
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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