Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Problema classe es1 hw4

marco.giuliani (23860 points)
4 13 62
in Es1 by (23.9k points)
closed by

Sfortunatamente ho perso il codice del primo esercizio, e, rifacendolo sto avendo un enorme problema.

Volevo risolverlo creando una classe Albero, definendola come abbiamo visto in classe/laboratorio, ovvero che ad ogni oggetto di tipo Albero, assegno il suo valore, e una lista figli, i cui elementi saranno ovviamente altri oggetti di tipo albero, per poter svolgere il calcolo dell'altezza ricorsivamente.

Il problema è che, quando vado ad aggiungere uno di questi oggetti alla lista figli di un altro, mi si aggiunge una volta alla lista come oggetto, che però ha a sua volta lo stesso oggetto come figlio, ripetendo questa cosa all'infinito, e per tutti gli oggetti Albero definiti.

Allego una minuscola parte di comandi che ho dato in console per farmi capire meglio:

Se ad esempio faccio questo

a = Albero(1, figli=[Albero(2)])

c = Albero(3)

Io poi potrò fare a.figli[0].figli[0].figli[0].........figli[0] all'infinito, e otterrò l'oggetto Albero(2) come risultato. E lo stesso posso fare con b o c, anche se non ho aggiunto nulla alla loro lista figli.

Ovviamente questo problema, oltre a impedirmi la ricorsione, mi impedisce di fare qualsiasi cosa con questi oggetti, e mi fa morire il Kernel ogni volta.

317 views
closed with the note: risolto con la magia del Natale

1 Answer

a
alex_err (5800 points)
1 3 32
by (5.8k points)
Non vorrei dire cavolate, non avendo maggiori informazioni, ma mi sembra che quello che tu hai fatto è definire gli attributi in modo statico, altrimenti non mi spiego come puoi fare a.figli[0].figli[0] all'infinito e avere sempre Albero(2). Gli attributi vanno definiti nel metodo __init__ della classe utilizzando self.variabile = valore.
marco.giuliani (23860 points)
4 13 62
by (23.9k points)
No no, gli attributi li ho definiti bene, così come tutto il resto del codice.

Ora ho acceso il PC dopo averlo spento da ieri, e mo che ho riprovato funziona bene. Booooh