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 5 · Architecture & Code ReviewSlabé reference a finalizátořipredict70 / 161
+125 XP
Úkol
📝 **Otázka:** Předpovězte přesný výkon. Každá ze dvou instancí \`Connection\` má zpětné volání \`weakref.finalize\`, které připojí \`"closed:<name>"\` k protokolu, když je objekt GC'd. Ovladač: (1) zkontroluje délku protokolu, (2) vymaže c1 + vynutí GC, (3) vymaže c2 + vynutí GC. Kdy se spustí zpětná volání a v jakém pořadí? 📋 Vyberte správnou odpověď. 💡 **Tip:** Pokud si nejste jisti, přečtěte si znovu teorii výše.
Předpověz výstup

Přečti kód pozorně

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}")

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…