Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiSenior Deep-DivesModulo 5 · Architettura e revisione del codiceRiferimenti deboli e finalizzatoripredict70 / 161
+125 XP
Compito
📝 **Domanda:** Prevedere l'output esatto. Due istanze di \`Connection\` hanno ciascuna un callback \`weakref.finalize\` che aggiunge \`"closed:<name>"\` a un log quando l'oggetto è GC. Il driver: (1) controlla la lunghezza del log, (2) cancella c1 + forza GC, (3) cancella c2 + forza GC. Quando vengono attivate le richiamate e in quale ordine? 📋 Scegli la risposta giusta. 💡 **Suggerimento:** Rileggi la teoria sopra se non sei sicuro.
Predici output

Leggi il codice attentamente

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

Cosa stamperà il programma? Scrivi qui:

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…