Forum >> Principianti >> inizializzazione classi

Pagina: 1

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!!






Ho copiato dalla guida quindi non saprei proprio che fare!!

Quell'init non è copiato bene ;)

*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
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 Goffredo
Nota: ho omesso i '>>>' della console interattiva.

Cya



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 ---
Si gli underscore ci sono,
Sicuro siano doppi, nel tuo codice erano singoli?

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?

Il codice funziona, l'ho testato prima di dartelo, quindi c'è un errore diverso.

Claudio_F : cosa intendi con non copiato bene?

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
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???
Ah beh non pensavo ci fosse differza tra uno o due underscore, ora capisco.
Ti consiglio questa interessante lettura.


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???


Mi interessava capire se per caso usassi la console interattiva che può trarre in inganno con l'indentazione.

Cya
non pensavo ci fosse differza tra uno o due underscore


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.