View Single Post
Old 11-12-2008, 21:36   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
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ì.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso