Naar hoofdinhoud
🔒 Voorbeeldmodus. De eerste vijftien Foundations-lessen zijn gratis; deze is Pro. Start een 7-daagse trial om de editor, AI-hints en de rest van het curriculum te ontgrendelen. Kaart vereist, op elk moment opzegbaar in Dashboard.Start 7-daagse trial →
← CursussenSenior Deep-DivesModule 5 · Architectuur- en codebeoordelingZwakke referenties en finalizerspredict70 / 161
+125 XP
Opdracht
📝 **Vraag:** Voorspel de exacte output. Twee \`Connection\` instances hebben elk een \`weakref.finalize\` callback die \`"closed:<name>"\` toevoegt aan een logbestand wanneer het object is geGC'd. De driver: (1) controleert de loglengte, (2) verwijdert c1 + forceert GC, (3) verwijdert c2 + forceert GC. Wanneer worden de callbacks geactiveerd en in welke volgorde? 📋 Kies het juiste antwoord. 💡 **Hint:** Herlees de bovenstaande theorie als je het niet zeker weet.
Voorspel uitvoer

Lees de code zorgvuldig

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

Wat zal het programma uitprinten? Schrijf hier:

💬 Discussie

Wees de eerste — stel een vraag of deel een tip.
Log in om mee te doen aan de discussie. Lezen is gratis.
Discussie laden…