Oppure

Loading
27/04/11 11:14
comtel
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:
class Tempo:
	def StampaTempo(Orario):
		print str(Orario.Ore) + ":" + \
		      str(Orario.Minuti) + ":" + \
		      str(Orario.Secondi)

mi va tutto bene,ho anche dichiarato la variabile OraAttuale:
OraAttuale=Tempo()
         OraAttuale.Ore=9
         OraAttuale.Minuti=13
         OraAttuale.Secondi=30

Quando però scrivo come mi dice il libro,cioè :
OraAttuale.StampaTempo()


Mi da un errore,questo:
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    OraAttuale.StampaTempo()
AttributeError: Tempo instance has no attribute 'StampaTempo'


che significa?
e come posso risolvere il problema?

Grazie in anticipo per l'aiuto! :asd:
aaa
27/04/11 13:22
nihal
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:
class Tempo:
    Ore = 0
    Minuti = 0
    Secondi = 0
    def StampaTempo(self): #Ogni metodo in python prende come parametro self
        print str(self.Ore) + ":" + \
        str(self.Minuti) + ":" + \
        str(self.Secondi)

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