Un ultimo pilastro dell'OLP da percorrere, abbiamo parlato di incapsulamento, di astrazione e di ereditarietà,
e poi c'è questo quarto pilastro che ha una parola piuttosto difficile, polimorfismo.
Che cosa significa?
Bene, Polly significa molti e di più.
Fiza significa per tante forme.
Ora, sappiamo che i metodi appartengono agli oggetti, giusto?
Usiamo la parola chiave self per agire sull'oggetto che è stato istanziato.
Ora, in Python, questa idea di polimorfismo si riferisce al modo in cui le classi di oggetti possono condividere lo stesso
nome di metodo.
Ma quei nomi meta possono agire in modo diverso in base a ciò che l'oggetto li chiama.
Ora, sembra estremamente confuso, quindi diamo un'occhiata a un codice.
Abbiamo la nostra procedura guidata utente e Archer Classis.
E come ho detto, con il polimorfismo, diverse classi di oggetti possono condividere i nomi
dei metodi, quindi qui abbiamo un attacco condiviso, ma ognuno fa qualcosa di diverso in base all'attributo.
Ad esempio, quando eseguo la procedura guidata un attacco.
Quindi facciamolo.
Wizzard attacco a un punto.
Se clicco su Esegui, attacco con una potenza di 60 perché, beh, Wizzard ha un significato speciale per il suo
attacco contro Archer.
Sono diversi.
Quindi, sebbene condividano gli stessi nomi di metodo a causa dell'oggetto che lo chiama, l'output
sarà diverso.
Quindi possiamo effettivamente fare qualcosa di molto interessante qui, diciamo che
ho uno Wizzard e poi avremo anche Archer uno e Archer uno sarà Robin.
E Robin ha 30 ore adesso.
Quello che posso fare qui è in realtà chiamarli in modi diversi, ad esempio,
posso creare un'intera nuova funzione chiamata attacco del giocatore in questo giocatore che attacca prende un personaggio.
E qui possiamo dire attacco del punto del personaggio.
E ora se eseguo questo codice e dico.
Attacco del giocatore.
Mago uno.
E io gestisco questo.
Attaccherò con una potenza di uno se attacco un giocatore, ho Archer qui, se clicco su corri.
Vedi che la stessa funzione mi dà un output diverso, anche
se stiamo chiamando la stessa cosa a causa dell'oggetto che gli passiamo polimorfismo, un altro modo per
dimostrarlo è se facciamo un ciclo for, se lo faccio for, diciamo, personaggio in e aggiungiamo Wizzard uno e Archer uno in un elenco.
E se stampo qui o eseguiamo il carattere punto attacco.
Se clicco corri qui.
Ancora una volta, ho due output diversi, anche se sto chiamando lo stesso metodo per via
dei diversi oggetti e questo è un concetto davvero potente, giusto, perché siamo in grado di personalizzarlo in
base alle nostre esigenze specifiche, anche se, diciamo che l'utente ha avuto un attacco.
Metodo e questo metodo di attacco predefinito è, diciamo che print non fa nulla perché è solo un utente.
Anche se eseguo questi, diciamo la procedura guidata di stampa uno.
E diciamo attacco punto, se clicco, corro.
Sovrascriverà qualunque fosse l'attacco originale, perché abbiamo già quel metodo nella nostra classe di
maghi.
Ma diciamo che volevo che sia Yuzu che Wizzard eseguissero il metodo di attacco, come posso farlo?
Ora, questo è qualcosa che esploreremo un po' di più nel prossimo video, ma per ora posso dire che
l'attacco del punto dell'utente.
E darsi da fare.
Perché accetto user come mio parametro qui.
E poi io Camron, attacco punto utente.
Quindi vediamo cosa succede qui se faccio clic su Esegui.
Non ho nulla da fare e attacco con una potenza di 60.
Quindi il polimorfismo ci consente di avere molte forme, è la capacità di ridefinire i metodi per queste classi derivate che
è Wizard e Archer.
E un oggetto che viene istanziato può comportarsi in forme diverse in modi diversi, in base al polimorfismo.
E questo è utile perché siamo in grado di modificare le nostre classi in base alle nostre esigenze specifiche.
Ma non dobbiamo nemmeno ripeterci nel caso in cui vogliamo usare qualcosa come l'attacco dall'utente all'interno di
Wizard.
Ecco qua, i quattro pilastri dell'incapsulamento OPIS.
Astrazione.
Ereditarietà e infine, polimorfismo.
Tuttavia, nessuna quantità di video o libri ti insegnerà esattamente quando usare cosa.
L'idea qui è capire che questi poteri esistono con l'OLP.
Non dirai mai, oh, devo implementare il polimorfismo.
No, la maggior parte delle volte stai solo programmando e succede che stai programmando in un modo che enfatizza
il polimorfismo.
Questo è solo il potere di OLP, anche se queste sono parole grosse, alla fine della giornata,
abbiamo imparato a usarle per strutturare il nostro codice in modo efficiente e pulito.
E questo è il punto.
Si tratta di organizzare il nostro codice.
Ora, alcuni di voi potrebbero essere stati un po' confusi quando ho attaccato questo punto utente nel prossimo video, voglio esplorarlo
un po' di più.
Ci vediamo su quello.