Un último pilar de OLP, hablamos sobre encapsulación, abstracción y herencia, y luego
está este cuarto que tiene una palabra bastante difícil, polimorfismo.
¿Qué significa eso?
Bueno, Polly significa muchos y más.
Fiza significa para tantas formas.
Ahora, sabemos que los métodos pertenecen a los objetos, ¿verdad?
Usamos la palabra clave auto para actuar sobre el objeto que se instancia.
Ahora, en Python, esta idea de polimorfismo se refiere a la forma en que las clases de objetos pueden compartir el mismo
nombre de método.
Pero esos nombres de meta pueden actuar de manera diferente según el objeto que los llame.
Ahora, eso suena extremadamente confuso, así que echemos un vistazo a un código.
Tenemos nuestro asistente de usuario y Archer Classis.
Y como mencioné, con el polimorfismo, diferentes clases de objetos pueden compartir nombres de métodos, por
lo que aquí tenemos un ataque que se comparte, pero cada uno hace algo diferente según el atributo.
Por ejemplo, cuando realizo un ataque.
Así que hagámoslo.
Ataque de un punto de Wizzard.
Si hago clic en ejecutar, ataco con un poder de 60 porque, bueno, Wizzard tiene un significado especial para su
ataque contra Archer.
Son diferentes.
Entonces, aunque comparten los mismos nombres de método debido al objeto que lo llama, la salida
será diferente.
Así que podemos hacer algo bastante interesante aquí, digamos que tengo
uno de Wizzard y luego también tendremos a Archer uno y Archer uno será Robin.
Y Robin tiene 30 horas ahora.
Lo que puedo hacer aquí en realidad es llamarlos de diferentes maneras, por ejemplo, puedo
crear una función completamente nueva llamada ataque de jugador en este ataque de jugador toma un personaje.
Y aquí podemos decir carácter dot attack.
Y ahora si ejecuto este código y digo.
Ataque del jugador.
Asistente uno.
Y ejecuto esto.
Atacaré con el poder de uno si hago un ataque de jugador, tengo a Archer aquí, si hago clic en ejecutar.
Verá que la misma función me da una salida diferente, aunque
estamos llamando a lo mismo debido al polimorfismo del objeto que le pasamos, otra forma de demostrar
esto es si hacemos un bucle for, si lo hago para, digamos, personaje en y agreguemos Wizzard uno y Archer uno en una lista.
Y si imprimo aquí o simplemente ejecutemos character dot attack.
Si hago clic en ejecutar aquí.
Una vez más, tengo dos salidas diferentes, aunque estoy llamando al mismo método debido a
los diferentes objetos y este es un concepto realmente poderoso, ¿verdad? Porque podemos personalizar esto de acuerdo
con nuestras necesidades específicas, incluso si, digamos que el usuario tuvo un ataque.
El método y este método de ataque predeterminado es, digamos que imprimir no hace nada porque es solo un usuario.
Incluso si ejecuto estos, digamos asistente de impresión uno.
Y digamos ataque de puntos, si hago clic, corro.
Va a anular el ataque original, porque ya tenemos ese método en nuestra clase de
asistente.
Pero digamos que quería que tanto Yuzu como Wizzard ejecutaran el método de ataque, ¿cómo puedo hacer esto?
Ahora, esto es algo que exploraremos un poco más en el próximo video, pero por ahora puedo decir ataque
de puntos de usuario.
Y entrégate.
Porque acepto usuario como mi parámetro aquí.
Y luego yo Camron, ataque de puntos de usuario.
Así que veamos qué sucede aquí si hago clic en ejecutar.
No tengo nada que hacer y atacar con un poder de 60.
Entonces, el polimorfismo nos permite tener muchas formas, es la capacidad de redefinir métodos para estas clases derivadas lo que
es Wizard y Archer.
Y un objeto que se instancia puede comportarse de diferentes formas de diferentes maneras, según el polimorfismo.
Y esto es útil porque podemos modificar nuestras clases según nuestras necesidades específicas.
Pero tampoco tenemos que repetirnos en caso de que queramos usar algo como un ataque del usuario dentro del
Asistente.
Ahí lo tienen, los cuatro pilares de la encapsulación OPIS.
Abstracción.
Herencia y finalmente polimorfismo.
Ahora, sin embargo, ninguna cantidad de videos o libros te enseñarán exactamente cuándo usar qué.
La idea aquí es entender que estos poderes existen con OLP.
Nunca dirás, oh, necesito implementar el polimorfismo.
No, la mayoría de las veces solo está codificando y sucede que está codificando de una manera que enfatiza
el polimorfismo.
Este es solo el poder de OLP, aunque estas son palabras importantes, al final del día, hemos
aprendido cómo usarlas para estructurar nuestro código de una manera eficiente y limpia.
Y ese es el punto.
Se trata de organizar nuestro código.
Ahora, algunos de ustedes pueden haber estado un poco confundidos cuando hice este ataque de puntos de usuario en el siguiente video, quiero
explorar esto un poco más.
Te veré en ese.