Перейти до основного вмісту
🔒 Режим прев'ю. Перші 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:<name>\` і додає до \`реєстру\`. Два запитання: (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)

Що виведе програма? Напиши тут:

💬 Обговорення

Будьте першим — поставте запитання або поділіться порадою.
Увійдіть щоб приєднатися до обговорення. Читання безкоштовне.
Завантаження обговорення…