Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - Problema con la programmazione orientata agli oggetti!
Forum - Python - Problema con la programmazione orientata agli oggetti!

Avatar
comtel (Member)
Pro


Messaggi: 145
Iscritto: 08/04/2011

Segnala al moderatore
Postato alle 13:14
Mercoledì, 27/04/2011
Ciao a tutti,sto imparando il python,e sono arrivato alla sezione 14.0,ovvero dove si parla della programmazione orientata agli oggetti con python.Mentre stavo programmando mi sono imbattuto in un problema che non riesco a risolvere,cioè quando scrivo questo codice nell'interprete python:
Codice sorgente - presumibilmente Python

  1. class Tempo:
  2.         def StampaTempo(Orario):
  3.                 print str(Orario.Ore) + ":" + \
  4.                       str(Orario.Minuti) + ":" + \
  5.                       str(Orario.Secondi)


mi va tutto bene,ho anche dichiarato la variabile OraAttuale:
Codice sorgente - presumibilmente Plain Text

  1. OraAttuale=Tempo()
  2.          OraAttuale.Ore=9
  3.          OraAttuale.Minuti=13
  4.          OraAttuale.Secondi=30


Quando però scrivo come mi dice il libro,cioè :
Codice sorgente - presumibilmente Plain Text

  1. OraAttuale.StampaTempo()



Mi da un errore,questo:
Codice sorgente - presumibilmente Python

  1. Traceback (most recent call last):
  2.   File "<pyshell#36>", line 1, in <module>
  3.     OraAttuale.StampaTempo()
  4. AttributeError: Tempo instance has no attribute 'StampaTempo'



che significa?
e come posso risolvere il problema?

Grazie in anticipo per l'aiuto! :asd:

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 15:22
Mercoledì, 27/04/2011
Il problema è che tu hai dichiarato il metodo StampaTempo(Orario) che prende in input un oggetto Orario; con la chiamata a StampaTempo() tu non passi nessun parametro al metodo, e quindi dà errore. Prova a fare in questo modo:
Codice sorgente - presumibilmente Python

  1. class Tempo:
  2.     Ore = 0
  3.     Minuti = 0
  4.     Secondi = 0
  5.     def StampaTempo(self): #Ogni metodo in python prende come parametro self
  6.         print str(self.Ore) + ":" + \
  7.         str(self.Minuti) + ":" + \
  8.         str(self.Secondi)


Dichiarando la classe in questo modo puoi usare il codice che hai scritto prima :)

Ho dichiarato OraAttuale,poi ho scritto sempre uguale a prima,cioè OraAttuale.StampaTempo() ma mi da ancora un errore: - comtel - 27/04/11 16:42
Ho risolto Grazie. Ma perchè poi su un libro di python mi da del codice sbagliato??? - comtel - 27/04/11 16:45
Può dipendere anche da quale versione di Python consideri... Non lo tocco da un pò di tempo, ma con la versione 3 sono cambiate molte cose.... - nihal - 27/04/11 21:48
PM