Sobes.tech
Back to questions
Junior — Middle
52

Какие методы метакласса активируются при создании нового класса в Python?

Answer from AI

sobes.tech AI

При создании нового класса в Python метакласс активирует в первую очередь метод __new__, который отвечает за создание самого объекта класса (то есть класса как объекта метакласса). Затем вызывается метод __init__, который инициализирует созданный класс, например, устанавливает атрибуты.

Процесс выглядит так:

  1. __new__(metacls, name, bases, namespace) — создает объект класса.
  2. __init__(cls, name, bases, namespace) — инициализирует созданный класс.

Пример метакласса с этими методами:

class Meta(type):
    def __new__(metacls, name, bases, namespace):
        print(f"Создаем класс {name}")
        return super().__new__(metacls, name, bases, namespace)

    def __init__(cls, name, bases, namespace):
        print(f"Инициализируем класс {name}")
        super().__init__(name, bases, namespace)

class MyClass(metaclass=Meta):
    pass

При объявлении MyClass выведется:

Создаем класс MyClass
Инициализируем класс MyClass