Saltar al contenido principal
🔒 Modo vista previa. Las primeras quince lecciones de Foundations son gratis; esta es Pro. Inicia un trial de 7 días para desbloquear el editor, las pistas AI y el resto del programa. Tarjeta requerida, cancela cuando quieras en Dashboard.Iniciar trial de 7 días →
← CursosSenior Deep-DivesMódulo 5 · Revisión de arquitectura y códigoReferencias débiles y finalizadores.predict70 / 161
+125 XP
Tarea
📝 **Pregunta:** Predice el resultado exacto. Cada una de dos instancias de \`Connection\` tiene una devolución de llamada \`weakref.finalize\` que agrega \`"closed:<name>"\` a un registro cuando el objeto se GC. El controlador: (1) verifica la longitud del registro, (2) elimina c1 + fuerza GC, (3) elimina c2 + fuerza GC. ¿Cuándo se activan las devoluciones de llamada y en qué orden? 📋 Elige la respuesta correcta. 💡 **Pista:** Vuelve a leer la teoría anterior si no estás seguro.
Predice la salida

Lee el código con atención

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

¿Qué imprimirá el programa? Escribe aquí:

💬 Discusión

Sé el primero en hacer una pregunta o compartir un consejo.
Inicia sesión para unirte a la discusión. Leer es gratis.
Cargando discusión…