Ugrás a fő tartalomra
🔒 Előnézet mód. Az első tizenöt Foundations lecke ingyenes; ez Pro. Indíts 7 napos trial-t, hogy feloldd a szerkesztőt, az AI tippeket és a tananyag többi részét. Kártya szükséges, bármikor lemondhatod a Dashboard-ban.7 napos trial indítása →
← KurzusokSenior Deep-Dives5. modul · Architektúra és kód áttekintéseGyenge referenciák és véglegesítőkpredict70 / 161
+125 XP
Feladat
📝 **Kérdés:** Jósolja meg a pontos kimenetet. Két \`Connection\` példánynak van egy \`weakref.finalize\` visszahívása, amely hozzáfűzi a \`"closed:<név>"\` kifejezést egy naplóhoz, ha az objektum GC'd. Az illesztőprogram: (1) ellenőrzi a napló hosszát, (2) törli c1 + kényszeríti a GC-t, (3) törli c2 + kényszeríti a GC-t. Mikor indulnak el a visszahívások és milyen sorrendben? 📋 Válassza ki a megfelelő választ. 💡 **Tipp:** Ha nem biztos benne, olvassa el újra a fenti elméletet.
Találd ki a kimenetet

Olvasd el a kódot figyelmesen

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

Mit ír ki a program? Írd ide:

💬 Beszélgetés

Légy az első — tegyél fel kérdést vagy oszd meg egy tippet.
Jelentkezz be hogy csatlakozz a beszélgetéshez. Az olvasás ingyenes.
Beszélgetés betöltése…