Preskoči na glavni sadržaj
🔒 Način pregleda. Prvih petnaest Foundations lekcija je besplatno; ova je Pro. Pokrenite 7-dnevni trial da otključate editor, AI savjete i ostatak programa. Kartica obavezna, otkažite bilo kada u Dashboard.Pokreni 7-dnevni trial →
← KolegijiSenior Deep-DivesModul 5 · Pregled arhitekture i kodaSlabe reference i finalizatoripredict70 / 161
+125 XP
Zadatak
📝 **Pitanje:** Predvidite točan rezultat. Dvije instance \`Connection\` imaju povratni poziv \`weakref.finalize\` koji dodaje \`"closed:<name>"\` u zapisnik kada je objekt GC'd. Pokretač: (1) provjerava duljinu dnevnika, (2) briše c1 + forsira GC, (3) briše c2 + forsira GC. Kada se aktiviraju povratni pozivi i kojim redoslijedom? 📋 Odaberite pravi odgovor. 💡 **Savjet:** Ponovno pročitajte gornju teoriju ako niste sigurni.
Predvidi izlaz

Pažljivo pročitaj kod

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

Što će program ispisati? Napiši ovdje:

💬 Rasprava

Budi prvi — postavi pitanje ili podijeli savjet.
Prijavi se kako bi se pridružio raspravi. Čitanje je besplatno.
Učitavanje rasprave…