Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыSenior Deep-DivesМодуль 1 · Внутренние механизмы параллелизма и асинхронностиМетаклассыpredict5 / 161
+100 XP
Задание
📝 **Задание:** Предскажите точный результат. \`Meta.__new__\` печатает \`meta_new:<name>\` при построении каждого класса. \`Base.__init_subclass__\` печатает \`init_sub:<имя>\` и добавляет в \`реестр\`. Два вопроса: (1) Запускается ли \`init_sub\` при создании самой \`Base\`? (2) Внутри \`Meta.__new__\` — \`print\` запускается до или после того, как \`super().__new__\` строит класс? 📋 Реализуйте функцию выше. Тесты запускаются автоматически. 💡 **Подсказка:** Если вы застряли, перечитайте теорию.
Предскажи вывод

Прочти код внимательно

class Meta(type):
    def __new__(mcs, name, bases, ns):
        print(f"meta_new:{name}")
        return super().__new__(mcs, name, bases, ns)


class Base(metaclass=Meta):
    registry = []
    def __init_subclass__(cls, **kwargs):
        print(f"init_sub:{cls.__name__}")
        Base.registry.append(cls.__name__)


class A(Base):
    pass


class B(Base):
    pass


print(Base.registry)

Что выведет программа? Напиши здесь:

💬 Обсуждение

Будьте первым — задайте вопрос или поделитесь подсказкой.
Войдите чтобы участвовать в обсуждении. Чтение бесплатно.
Загрузка обсуждения…