Forum
>>
Principianti
>>
inizializzazione classi
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da giorgio13 |
2017-08-28 01:36:16 - inizializzazione classi
|
Ciao a tutti, sto studiando la guida un'introduzione agli strumenti basilari della programmazione e ho un problema riguardante un esempio.
Quando faccio così: class persona(): def set_nome(self, a): self.nome = a def presentazione(self): print("buongiorno, mi chiamo " + self.nome) tizio1 = persona() tizio2 = persona() tizio1.set_nome("Goffredo Mengiazzo") tizio2.set_nome("Ton Cooper") tizio1.presentazione() tizio2.presentazione() Tutto bene il rsultato che mi stampa e quello che mi aspetto, ma poi facendo invece così(utilizzando _init_ al posto di set_nome): class persona(): def _init_(self, a): self.nome = a def presentazione(self): print("buongiorno, mi chiamo " + self.nome) tizio1 = persona("Goffredo Mengiazzo") tizio2 = persona("Ton Cooper") tizio1.presentazione() tizio2.presentazione() Mi stampa il seguente errore: Traceback (most recent call last): File "C:/Users/giorgio/Documents/prove/persona.py", line 10, in <module> tizio1 = persona("Goffredo Mengiazzo") TypeError: object() takes no parameters sapreste aiutarmi?? Ho copiato dalla guida quindi non saprei proprio che fare!! |
|
Scritto da Claudio_F |
2017-08-28 17:11:11 - Re: inizializzazione classi
|
Quell'init non è copiato bene
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione *** |
|
Scritto da Daniele aka Palmux |
2017-08-28 17:15:21 - Re: inizializzazione classi
|
Ciao caro, sicuro che hai scritto bene __init__? Ha il doppio underscore davanti e dietro.
class persona: def __init__(self, nome): self.nome = nome def presentazione(self): print("Buongiorno ", self.nome) tizio1 = persona("Goffredo") tizio1.presentazione() Buongiorno GoffredoNota: ho omesso i '>>>' della console interattiva. Cya |
|
Scritto da giorgio13 |
2017-08-29 10:39:39 - Re: inizializzazione classi
|
Si gli underscore ci sono,
Ho pure copiato ciò che hai scritto tu, come tutto deve essere fatto ma mi dice che la classe persona non accetta argomenti, dovrei fare che dargliene? Ma cosi vuol dire che sulla guida è scritto in modo sbagliato? Claudio_F : cosa intendi con non copiato bene? --- Ultima modifica di giorgio13 in data 2017-08-29 10:40:50 --- --- Ultima modifica di giorgio13 in data 2017-08-29 10:44:32 --- |
|
Scritto da Daniele aka Palmux |
2017-08-29 10:50:57 - Re: inizializzazione classi
|
Sicuro siano doppi, nel tuo codice erano singoli?
Il codice funziona, l'ho testato prima di dartelo, quindi c'è un errore diverso.
Hai scritto tu che hai copiato dalla guida, ma notando _init_ e non __init__ coi doppi underscore, ti ha scritto che hai copiato male. Curiosità, ma dove lo stai provando il codice, dentro la console interattiva, in un editor? Cya |
|
Scritto da giorgio13 |
2017-08-29 12:57:53 - Re: inizializzazione classi
|
Ah beh non pensavo ci fosse differza tra uno o due underscore, ora capisco.
I programmi pi faccio con l'editor di python e poi dopo averli salvati li lancio nel suo shell. Ci sono differenze anche nel fare questo??? |
|
Scritto da Daniele aka Palmux |
2017-08-29 17:04:23 - Re: inizializzazione classi
|
Ti consiglio questa interessante lettura.
Mi interessava capire se per caso usassi la console interattiva che può trarre in inganno con l'indentazione. Cya |
|
Scritto da Claudio_F |
2017-08-29 18:33:39 - Re: inizializzazione classi
|
Gli underscore sono caratteri validi per i nomi come gli altri:
>>> _ = 1 >>> __ = 3 >>> print(_ + __) 4 La console interattiva può comportarsi in modo diverso anche con le righe vuote e segnalare dei syntax error che in realtà nel codice non ci sono. *** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione *** |
Pagina: 1
Esegui il login per scrivere una risposta.