Lord_morpheus (Normal User)
Newbie
Messaggi: 11
Iscritto: 12/08/2010
|
salve ragazzi ,sto imparando il python e facendo un esercizio per creare le classi mi da errore non capisco il perchè... sapete aiutarmi?
>>> class Cibo:
def _init_(self, proteine =0,
carboidrati =0,
grassi =0):
self.proteine = proteine
self.carboidrati = carboidrati
self.grassi =grassi
pasta = Cibo (proteine=12, carboidrati=72, grassi=1)
print pasta.carboidrati
>>> print pasta.carboidrati
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
print pasta.carboidrati
NameError: name 'pasta' is not defined
|
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Dà quell'errore perchè hai dichiarato "pasta" all'interno della classe Cibo. Se vuoi far funzionare quel codice, devi togliere l'indentazione alla riga in cui istanzi l'oggetto pasta...
|
|
The Newbie (Member)
Pro
Messaggi: 175
Iscritto: 14/07/2010
|
Codice sorgente - presumibilmente Python |
class Cibo: def _init_(self, proteine =0,carboidrati =0,grassi =0): self.proteine = proteine self.carboidrati = carboidrati self.grassi = grassi pasta = Cibo(proteine=12, carboidrati=72, grassi=1) print pasta.carboidrati
|
p.s. non è necessario scrivere il nome della variabile per il metodo di inizializzazione nel costruttore se utilizzi tutti i parametri. i nomi sono necessari solo se non li utilizzi tutti e non ordinatamente
Esempio
Codice sorgente - presumibilmente Plain Text |
pasta = Cibo(proteine = 12, grassi = 1)
|
Ultima modifica effettuata da The Newbie il 12/08/2010 alle 19:29 |
|
Lord_morpheus (Normal User)
Newbie
Messaggi: 11
Iscritto: 12/08/2010
|
si quell'err del print l'avevo corretto,ma poi perchè mi dice NameError: name 'pasta' is not defined
l'ho definito alla 6 riga no? scusate l'ignoranza
|
|
The Newbie (Member)
Pro
Messaggi: 175
Iscritto: 14/07/2010
|
guarda che anche l'istanziazione dell'oggetto pasta si trova con indentazione errata, te lo avevo scritto anche nel codice sorgente che ho postato;
l'errore che hai fatto in sunto è questo: hai istanziato un oggetto all'interno del metodo di inizializzazione della classe da cui dipende
|
|
Lord_morpheus (Normal User)
Newbie
Messaggi: 11
Iscritto: 12/08/2010
|
ah scusa non avevo guardato bene... molte grazie
|
|
Lord_morpheus (Normal User)
Newbie
Messaggi: 11
Iscritto: 12/08/2010
|
mi da sempre errore... scusa il disturbo ma puoi postarmelo come andrebbe scritto il sorgente...
|
|
Lord_morpheus (Normal User)
Newbie
Messaggi: 11
Iscritto: 12/08/2010
|
>>> class Cibo:
def _init_(self, proteine =0,carboidrati =0,grassi =0):
self.proteine = proteine
self.carboidrati = carboidrati
self.grassi = grassi
pasta = Cibo(proteine=12, carboidrati=72, grassi=1)
print pasta.carboidrati
File "<pyshell#8>", line 4
self.carboidrati = carboidrati
^
IndentationError: unexpected indent
>>>
boooooooooooooo
|
|
delta (Normal User)
Pro
Messaggi: 96
Iscritto: 01/09/2009
|
certo!
Codice sorgente - presumibilmente Python |
class Cibo: def _init_(self, proteine =0,carboidrati =0,grassi =0): self.proteine = proteine self.carboidrati = carboidrati self.grassi = grassi
|
il povero Python impazzisce se non lo indenti per bene...
http://it.wikipedia.org/wiki/Indentazione
Codice sorgente - presumibilmente Python |
class Cibo(object): #new-style classes def _init_(self, proteine =0,carboidrati =0,grassi =0): self.proteine = proteine self.carboidrati = carboidrati self.grassi = grassi class Pasta(Cibo): pass #in pratica eredita tutto da Cibo, essendolo >>>barilla=Pasta() >>>print barilla.carboidrati 0 >>>
|
Ma da che guida stai studiando? Ultima modifica effettuata da delta il 13/08/2010 alle 11:18 |
|