Provare a eliminare correttamente un oggetto Python. Sto creando un oggetto e quindi presumibilmente lo cancellerò con un'istruzione 'with'. Ma quando faccio una stampa dopo il 'con' affermazione è chiuso .... l'oggetto è ancora lì:Python 'con' non eliminare l'oggetto
class Things(object):
def __init__(self, clothes, food, money):
self.clothes = clothes
self.food = food
self.money = money
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('object deleted')
with Things('socks','food',12) as stuff:
greg = stuff.clothes
print(greg)
print(stuff.clothes)
rendimenti:
socks
object deleted
socks
La risposta di Alex Taylor è giusta sui soldi. Voglio aggiungere che dal momento che Python ha la gestione automatica della memoria (garbage collection) non è necessario preoccuparsi di eliminare oggetti che non sono più in uso. Quindi il tuo uso di un gestore di contesto per questo scopo è inutile. Anche la variabile chiamata "stuff" è creata dall'istruzione 'with' ma continua ad esistere fino alla fine dello script, come hai osservato. Se hai una riga 'del stuff', il nome" stuff "diventa indefinito. È raro che tu debba farlo. –
Possibile duplicato di [Variabile definita con con-statement disponibile al di fuori di con-block?] (Http://stackoverflow.com/questions/6432355/variable-defined-with-with-statement-available-outside-of-with- blocco) –