|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Programmazione con Python
Ciao a tutti, mi trovo alle prese con le classi ed oggetti di pyhton, utilizzo il pensare come libro.
Questo è il primo esempio. Codice:
class Punto: P1.x = 3.0 #definisco la classe Punto P1.y = 4.0 #definisco la varibile P1 e gli attributi print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y P1 = Punto() print P1.x print P1.y Quindi, a detta del libro, dovrebbe andare tutto bene, invece appena metto il codice su Terminale visualizzo : Codice:
class Punto: P1.x = 3.0 P1.y = 4.0 print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y (3.0, 4.0) >>> P1 = Punto() >>> print P1.x Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: Punto instance has no attribute 'x' >>> print P1.y Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: Punto instance has no attribute 'y' |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Codice:
class Punto: pass P1 = Punto() P1.x = 10 P1.y = 11
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Puoi postare il codice completo del libro, e dirmi che versione usi di Python?
Intanto ti dico che, giustamente, Python ti segnala che quell'istanza non possiede gli attribuiti x e y.
__________________
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 |
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Quote:
Codice:
class Punto: pass P1 = Punto() P1.x = 3.0 P1.y = 4.0 print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y print P1.x print P1.y Codice:
class Punto: P1.x = 3.0 #definisco la classe Punto P1.y = 4.0 #definisco la varibile P1 e gli attributi print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y P1 = Punto() print P1.x print P1.y SyntaxError: invalid syntax Codice:
class Punto: P1.x = 3.0 #definisco la classe Punto P1.y = 4.0 #definisco la varibile P1 e gli attributi print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y (3.0, 4.0) P1 = Punto() print P1.x Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: Punto instance has no attribute 'x' print P1.y Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: Punto instance has no attribute 'y' |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm
Poi una domanda ma il libro perché mi dice di fare questa sequenza se è sbagliata? e mi dicevi che il libro fa l'esempio della sequenza iniziale del codice con il pass in questo modo Codice:
class Punto pass "L'istruzione pass non ha effetti è stata inserita solo per il solo fatto che la definizione prevede un corpo che deve ancora essere scritto" Quindi desumo che non va usato, giusto? Poi più avanti mi dice : "Per creare un oggetto di tipo Punto viene chiamata una funzione chiamata Punto: Codice:
P1 = Punto() Codice:
P1.x = 3.0 P1.y = 4.0 Codice:
print P1.y print P1.x Codice:
print'(' + str(P1.x) +', '+ str(P1.y) + ')' DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Ho capito l'errore....
![]() Allora io facevo questo : Codice:
class Punto: pass P1 = Punto() P1.x = 3.0 P1.y = 4.0 print P1.x print P1.y Codice:
>>> class Punto: pass >>> p1 = Punto() >>> P1.x = 3.0 >>> P1.y = 4.0 >>> >>> print P1.x 3.0 >>> print P1.y 4.0 Adesso un dubbio. Dato questo codice: Codice:
>>> class Punto: pass >>> P1.x = 3.0 >>> P1.y = 4.0 >>> print'(' + str(P1.x) +', '+ str(P1.y) + ')' (3.0, 4.0) >>> DistanzaAlQuadrato = P1.x * P1.x + P1.y * P1.y >>> @FULL Tu mi parlavi di dentro la classe e fuori la classe, io non so se ti riferivi a quello che o scoperto adesso, perché non capivo cosa intendevi, e quindi continuavo a non seguire. Comunque grazie lo stesso. Ultima modifica di nuvolare : 01-04-2009 alle 12:26. |
![]() |
![]() |
![]() |
#9 | ||
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Codice:
print DistanzaAlQuadrato Quote:
Codice:
class Punto: dentro la classe dentro la classe fuori la classe
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
||
![]() |
![]() |
![]() |
#10 | |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Quote:
Il problema e che di identazione non ne ha mai parlato questo libro, quindi quello che so e grazie a te ai vari forum e agli esperimenti fatti. Ma non c'è un listato di quando e come fare l'identazione? Tipo, dopo il print, dopo al funzione, in questo senso, perché altrimenti non so mai quando è giusto e quando non lo è. Grazie |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Se usi un IDE mezzo decente impari a capire quando usarla, ti indenta in automatico il codice. Infine, non usare sempre il terminale, cosi fai solo confusione. Usalo solo quando devi fare qualche prova al volo, per il resto usa l'IDE. Cosi puoi modificare il file quando vuoi, salvarlo e imparare come usare l'indentazione.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
![]() ![]()
__________________
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 |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In pochi mesi sei passato dal chiedere spiegazioni a fornirle. Direi che c'è ben poco da commentare. Complimenti.
![]()
__________________
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 |
![]() |
![]() |
![]() |
#15 |
Messaggi: n/a
|
Quoto e rinnovo i complimenti, ogni tanto leggo anche in questa sezione
![]() |
![]() |
![]() |
#16 | ||
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
![]() Queste sono le cose basilari, se non sapessi spiegarle sarebbe grave ![]() Quote:
![]() P.S: rileggendo ogni tanto quel libro, come in questo caso, capisco il perchè di tutte quelle richieste di spiegazioni che facevo: alcune cose per chi non conosce il linguaggio non sono chiare e le dà per scontate, cosi si incappa in dubbi che riguardandoli dopo ti dici: "che stupido".
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
||
![]() |
![]() |
![]() |
#17 | |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Quote:
![]() Ultima modifica di nuvolare : 01-04-2009 alle 23:37. |
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
E' questo il problema di non avere libri fatti come si deve. Ma per iniziare da 0 quello è il migliore.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Jan 2006
Messaggi: 299
|
Full, mi dicevi di utilizzare un IDE, non vorrei fare confusione ma sono diversi con IDLE che c'è nella cartella di python?
Nel frattempo continuo con i miei studi e sto facendo il paragrafo 12.5, in cui mi dice di fare: Codice:
>>> class Rettangolo: pass >>> Rett = Rettangolo() >>> Rett.Largezza = 100.0 >>> Rett.Altezza = 200.0 >>> Rett.AltoSinistra = Punto() >>> Rett.AltoSinistra.x = 0.0; >>> Rett.AltoSinistra.y = 0.0; >>> def TrovaCentro(Rettangolo): P = Punto() P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0 P.y = Rettangolo.AltoSinistra.y + Rettangolo.Altezza/2.0 return P >>> Centro = TrovaCentro(Rett) Traceback (most recent call last): File "<pyshell#49>", line 1, in <module> Centro = TrovaCentro(Rett) File "<pyshell#48>", line 3, in TrovaCentro P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza/2.0 AttributeError: Rettangolo instance has no attribute 'Larghezza' >>> Il link è questo http://www.python.it/doc/Howtothink/...-it/chap12.htm la parte dei Rettangoli 12.5 Ultima modifica di nuvolare : 02-04-2009 alle 18:10. |
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Mar 2007
Messaggi: 4683
|
Quote:
Codice:
>>> Rett.AltoSinistra.x = 0.0; >>> Rett.AltoSinistra.y = 0.0; Comunque ecco il codice, studialo e vedrai dove hai sbagliato: Codice:
class Rettangolo: pass class Punto: pass Rett = Rettangolo() Rett.Larghezza = 100 Rett.Altezza = 200 Rett.AltoSinistra = Punto() Rett.AltoSinistra.x = 0.0 Rett.AltoSinistra.y = 0.0 def TrovaCentro(Rettangolo): P = Punto() P.x = Rettangolo.AltoSinistra.x + Rettangolo.Larghezza / 2 P.y = Rettangolo.AltoSinistra.y + Rettangolo.Altezza / 2 return P def StampaPunto(Punto): print '(' + str(Punto.x) + ', ' + str(Punto.y) + ')' Centro = TrovaCentro(Rett) StampaPunto(Centro)
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:10.