Prejsť na hlavný obsah
🔒 Režim náhľadu. Prvých pätnásť lekcií Foundations je zadarmo; táto je Pro. Spustite 7-dňový trial pre odomknutie editora, AI nápovied a zvyšku kurzu. Karta vyžadovaná, zrušte kedykoľvek v Dashboard.Spustiť 7-dňový trial →
← KurzySenior Deep-DivesModul 5 · Prehľad architektúry a kóduSlabé referencie a finalizátoripredict70 / 161
+125 XP
Úloha
📝 **Otázka:** Predpovedajte presný výstup. Každá z dvoch inštancií \`Connection\` má spätné volanie \`weakref.finalize\`, ktoré pripojí k protokolu \`"closed:<name>"\`, keď je objekt GC'd. Ovládač: (1) skontroluje dĺžku protokolu, (2) vymaže c1 + vynúti GC, (3) vymaže c2 + vynúti GC. Kedy sa spustia spätné volania a v akom poradí? 📋 Vyberte správnu odpoveď. 💡 **Tip:** Ak si nie ste istí, prečítajte si znova teóriu vyššie.
Predpovedz výstup

Prečítaj kód pozorne

import weakref
import gc

log = []


class Connection:
    def __init__(self, name):
        self.name = name


def cleanup(name):
    log.append(f"closed:{name}")


c1 = Connection("a")
c2 = Connection("b")
weakref.finalize(c1, cleanup, c1.name)
weakref.finalize(c2, cleanup, c2.name)

print(f"alive:{len(log)}")
del c1
gc.collect()
print(f"after_c1:{log}")
del c2
gc.collect()
print(f"after_c2:{log}")

Čo program vypíše? Napíš sem:

💬 Diskusia

Buď prvý — polož otázku alebo sa podeľ o tip.
Prihlás sa aby si sa zapojil do diskusie. Čítanie je zadarmo.
Načítava sa diskusia…