Ben tornato.
Nel video precedente, ti ho mostrato come chiamare un metodo da una sottoclasse della classe genitore.
Quindi, nel nostro caso, abbiamo attaccato gli utenti.
Per eseguire il metodo di attacco e l'utente, ora ho rimosso il metodo di attacco da ora perché voglio provare qualcosa
di diverso.
Voglio creare una funzione init qui e questa funzione init prenderà self.
E poi diciamo che l'utente riceverà, diciamo, email.
Perché tutti gli utenti del nostro gioco devono avere e-mail.
E qui, diremo solo e-mail self-dot.
Chiameremo l'e-mail.
Bello e semplice.
Ora qui dentro.
Se dovessi eseguire questo codice e rimuoviamo i dati utente tac per ora, quindi abbiamo la stessa procedura guidata che
abbiamo appena aggiunto o, scusa, questo init.
E abbiamo il nostro wizard uno, quindi se eseguo Wizard qui e diciamo che vogliamo eseguire Wizard un punto e-mail.
Se clicco, corro.
Hmm, ottengo Wizard Object non ha attributi email.
Hmm, ma pensavo che l'utente sarebbe stato chiamato quando creeremo la procedura guidata, giusto, quando creeremo un'istanza della procedura guidata
uno.
Bene, il fatto è che, anche se potremmo ereditare, diciamo, per esempio, se lo faccio,
potremmo ereditare il.
Registrazione.
Dall'utente, e se clicco su Esegui, vediamo che ereditiamo che la procedura guidata ha già una funzione Init, già
un costruttore, giusto?
Quindi come possiamo risolverlo?
Bene, un modo è semplicemente aggiungere l'e-mail qui, giusto, e avere solo l'e-mail.
Attributo proprio qui sotto, ma qual è il problema con questo?
Beh, è inefficiente, giusto?
Perché se creo una classe Archer, dovrò fare la stessa cosa.
E sappiamo che tutti questi attributi saranno gli stessi in tutte le nostre sottoclassi.
Vogliamo farlo qui.
Quindi qual è un modo più efficiente per farlo?
Bene, vogliamo chiamare il metodo init dell'utente da qui dentro, giusto, perché ogni volta
che istanziamo un nuovo Wizzard, beh, questa funzione init verrà chiamata.
Quindi il modo per farlo è dire punto utente.
Sottolinea, sottolinea in esso.
E poi dargli il sé.
E poi e-mail.
E poi l'e-mail è qualcosa che passiamo.
Quindi se sono sceso qui, posso dirlo.
Merlin di Gmail dot com sarà l'e-mail.
Quindi ora se lo faccio, diciamo.
E-mail DOT per Wizzard one e faccio clic su Esegui.
Ricevo ancora una volta l'e-mail di Merlyn, tutto ciò che abbiamo fatto è stato chiamare il metodo Init.
Dell'utente all'interno della procedura guidata.
Quindi, quando abbiamo creato un'istanza di una nuova procedura guidata, abbiamo eseguito questa funzione e all'interno di questa
funzione abbiamo eseguito quell'utente e passato l'e-mail che abbiamo passato come argomento.
E qui.
Ora, questo è un modo per farlo, e poi c'è un altro modo, e si chiama super ed è una parola
chiave.
Come puoi vedere, viene evidenziato qui e tutto ciò che facciamo è correre alla grande.
E Super si riferisce alla super classe o alla classe sopra Wizzard, che è utente, e questa è in realtà una
nuova aggiunta a Python, due punti a.
Con super, in realtà non abbiamo più bisogno del sé, quindi il nostro codice sembra ancora più pulito e tutto ciò che passiamo è questo
e se clicchiamo, eseguiamo.
Abbiamo ancora la risposta giusta super.
Ci permette di fare riferimento all'utente in questo modo e di non doverci preoccupare di passare se stessi.