Перейти к основному содержимому
🔒 Режим превью. Первые 15 уроков Foundations — бесплатные; этот — Pro. Запусти 7-дневный trial чтобы открыть редактор, AI-подсказки и остальной курс. Нужна карта, отмена в Dashboard в любой момент.Начать 7-дневный trial →
← КурсыSenior Deep-DivesModule 6 · FAANG-2026 deep divesDescriptor lookup order — data vs non-datapredict106 / 161
+150 XP
Задание
📝 **Задание:** Предскажите точный результат. Два дескриптора: \`DataDesc\` определяет как \`__get__\` И \`__set__\` (дескриптор данных); \`NonDataDesc\` определяет только \`__get__\` (не данные). Оба являются атрибутами класса \`Holder\`. Затем тест передает значения непосредственно в `__dict__\` экземпляра, минуя протокол дескриптора. Какой из них победит для \`h.d\`, а какой для \`h.n\`? 📋 Реализуйте функцию выше. Тесты запускаются автоматически. 💡 **Подсказка:** Если вы застряли, перечитайте теорию.
Предскажи вывод

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

class DataDesc:
    def __get__(self, instance, owner):
        print("data:get")
        return 1
    def __set__(self, instance, value):
        print(f"data:set:{value}")


class NonDataDesc:
    def __get__(self, instance, owner):
        print("nondata:get")
        return 2


class Holder:
    d = DataDesc()
    n = NonDataDesc()


h = Holder()
h.__dict__["d"] = "shadow_d"
h.__dict__["n"] = "shadow_n"

print(h.d)
print(h.n)

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

💬 Обсуждение

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