Quote:
Originariamente inviato da ~FullSyst3m~
Apro un nuovo topic dato che l'altro sul libro in generale ormai e poco controllato. Ecco in breve cosa mi interesserebbe sapere, il libro che sto studiando negli ultimi capitoli ha un sacco di errori e ho passato più tempo a scovarli e correggerli che a concentrarmi sullo studio vero e proprio.
|
Guarda che è molto più difficile trovare un errore, perché ciò richiede necessariamente che tu abbia una buona comprensione dei concetti.
Quote:
Per prima cosa posto il codice, cosi da avere le idee chiare:
[...]
e questo è il capitolo interessato http://www.python.it/doc/Howtothink/...-it/chap16.htm
Adesso a noi:
1) ho provato a "runnare" ripetutamente il programma e alle volte viene eseguito senza problemi fino alla fine, altre dà un errore di indice (rilevato nella riga di codice in grassetto) e altre ancora si ferma al Nooooooooooooooooooooooooooooooo e finisce l'esecuzione.
|
Il codice mi sembra a posto. Quando hai un errore, riporta anche il traceback completo: magari c'è qualche informazione in più.
Quote:
2)
Codice:
Mano = ListaMani[i % NumMani]
Mano.AggiungiCarta(Carta)
Apparte che credo che l'approccio di insegnamento del libro in questi ultimi capitoli è degradato e apparte che crea un casino bestiale mettere una variabile con lo stesso nome di una classe,
|
In effetti avrebbe potuto usare un nome diverso.
Quote:
|
non capisco come mai ad AggiungiCarta viene passato come parametro self Mano che è una variabile?
|
Veramente ad AggiungiCarta viene passata sempre una carta, da quel che vedo.
Quote:
|
Probabilmente perchè il contenuto di quella variabile è un oggetto Mano, ma allora la domanda è: dove è stato creato questo oggetto Mano?
|
Riporta il pezzo di codice, perché non è chiaro: io vedo che gli viene passato un parametro di tipo Carta.
Quote:
Forse qua dato che ManoOldMaid eredita da Mano?
Codice:
self.Mani.append(ManoOldMaid(Nome))
|
No, qui vengono semplicemente creati i vari mazzi.
Quote:
|
3) se si usava Mano(Nome) non era la stessa cosa?
|
No, perché è una classe diversa.
Quote:
|
la classe ManoOldMaid è stata usata per poter poi sfruttare in un successivo momento il metodo al suo interno (RimuoviCoppie)?
|
Esattamente.
Quote:
|
P.S: credo che sia cosi controllando passo per passo, ma vorrei una conferma: l'ereditarietà funziona come una scatola dentro un'altra in pratica. Quindi ManoOldMaid oltre ad ereditare da Mano eredita anche da Mazzo visto che Mano eredita a sua volta da Mazzo?
|
Sì.