Přejít k hlavnímu obsahu
🔒 Režim náhledu. Prvních patnáct lekcí Foundations je zdarma; tato je Pro. Spusťte 7denní trial pro odemčení editoru, AI nápověd a zbytku kurzu. Karta vyžadována, zrušte kdykoli v Dashboard.Spustit 7denní trial →
← KurzySenior Deep-DivesModul 1 · Concurrency & Async InternalsDeskriptorypredict6 / 161
+100 XP
Úkol
📝 **Úkol:** Předpovězte přesný výstup. Deskriptor \`Tracker\` se vytiskne na bind / get / set. Tři věci k zamyšlení: (1) Kdy se \`__set_name__\` spustí? (2) Prochází \`b.x = 10\` přes \`__set__\`? (3) Když běží \`total = b.x + b.y\`, kdo volá oheň a v jakém pořadí? 📋 Implementujte výše uvedenou funkci. Testy probíhají automaticky. 💡 **Tip:** Pokud se zaseknete, přečtěte si znovu teorii.
Předpověz výstup

Přečti kód pozorně

class Tracker:
    def __set_name__(self, owner, name):
        self.name = name
        print(f"bind:{name}")
    def __get__(self, instance, owner):
        if instance is None:
            return self
        print(f"get:{self.name}")
        return instance.__dict__.get(self.name, 0)
    def __set__(self, instance, value):
        print(f"set:{self.name}={value}")
        instance.__dict__[self.name] = value


class Box:
    x = Tracker()
    y = Tracker()


b = Box()
b.x = 10
b.y = 5
total = b.x + b.y
print(total)

Co program vypíše? Napiš sem:

💬 Diskuze

Buď první — polož otázku nebo se podělej o tip.
Přihlas se abys se zapojil do diskuze. Čtení je zdarma.
Načítání diskuze…