Hola amigos, bienvenidos a esta clase.
Dónde vamos a estar viendo un poco más de las clases heredadas y lo nuevo que es polimorfismo en este
caso, yo ya para ahorrar tiempo me traje la las clases que hemos creado en la clase anterior, donde
vimos también herencia y en este caso voy a crear, vamos a crear algunos objetos que también ya lo
tengo escrito.
Como estamos viendo acá, donde aprovecho cada clase que hemos creado.
Bueno, creó un objeto distinto para cada uno, dándole los valores correspondientes a cada a cada objeto.
Lo que les quiero mostrar es cómo podemos crear una lista de productos en este caso.
Como verán, yo puedo crear en la variable a enviarle a través de una lista dos objetos que ya he creado
acá arriba en el número ejecución 2.
Como están viendo y aprovechando lo que ya hemos aprendido.
Pues si yo quiero agregar a la lista otro valor, yo lo pasé con append.
Este caso, si revisamos, vemos que efectivamente me ha creado los tres objetos de auto deportivo y
accesorios de una forma que podemos recorrer estos valores, porque si yo veo esto así la guardaré.
Si soy un usuario me asusto y si soy un programador digo bueno, todo muy lindo, pero que qué onda
que estoy escribiendo acá.
Bueno, si lo recorremos con un Ford y lo imprimimos con un salto de línea como estamos viviendo acá,
podemos ver efectivamente la información que hemos almacenado en nuestra lista con los diferentes objetos
que tenemos.
Vamos a continuar donde en este caso podemos ver.
Cómo podemos acceder a los atributos si son compartidos entre los objetos?
A qué me refiero?
Y acá nos vamos a detener un poco.
Y vamos a?
Trabajar sobre acá.
Lo que acabo de decir, justamente que podemos acceder a los atributos si son compartidos en los objetos.
Vean que acá nosotros tenemos los atributos de los tres objetos que hemos creado.
Entonces yo en este for estoy recorriendo justamente estos objetos en donde yo digo bueno, yo lo que
quiero ver en mi fábrica de autos.
La información de marca.
Y de precio, en este caso podemos ver qué marca y precio se encuentra en cada en todos.
O sea que es algo un factor común en cada objeto.
Esa es una condición que se tienen que cumplir.
Yo lo voy a ejecutar y vean que efectivamente me trae la marca Ir Maragail precio en el marca y el precio.
Hasta ahí, bárbaro.
Pero qué pasa si yo ahora quiero recorrer lo mismo pero con Hathor?
Fíjense que autor sólo se encuentra en el primer objeto que acá se visualiza a autor.
No se encuentran los otros objetos.
Acá tenemos un problema.
Efectivamente, acabamos de forzar un error donde vemos que Miza Python no lo dice es hinché muchacho
deportivo no se encuentra el en dentro del objeto deportivo no se encuentra el atributo autor.
Entonces tenemos acá un inconveniente.
Cómo lo podemos resolver?
Y acá es algo donde vamos a aprender algo nuevo.
Efectivamente, que ya lo deben estar viendo en pantalla.
No se asusten, vamos a explicarlo.
Lo que acá estamos aprendiendo de nuevo es esta terminología, que es Is instance, que de esta forma
lo que podemos hacer es tratar cada su clase de forma distinta.
Vuelvo a repetir con Is instance podemos tratar cada subclase de forma distinta.
A qué me refiero con esto?
Con su clase de una manera distinta, justamente podemos ir evaluando uno por uno y decir bueno, si
acá se encuentra autor, lo muestro acá este autor no Hakata autor no, bueno, que casi no lo muestro
y de esa forma yo iré evaluando y así pude ir mostrando cada subclase o alabándole por sí misma.
Entonces, bueno, acá como lo es también en pantalla, este código también lo van a tener ustedes quédense
tranquilos, yo voy haciendo esto que les estoy explicando uno por uno, tanto con un auto, como deportivo,
como con acceso.
Entonces yo imprimo.
Efectivamente no me da ningún error y yo puedo ir viendo porque ruedas, por ejemplo, si se fijan ruedas
no se encuentran todos.
Es el medio accesorio, nuestras ruedas.
Y acá tampoco, de hecho.
Así que ven que de esa manera nosotros lo podemos lograr.
Y ahora justamente lo que vamos a hacer es ver cómo a través de funciones podemos recibir objetos de
distintas clases.
Donde los objetos se envían por referencia a la función que vamos a ver.
Dónde acá lo que vamos a aprender es que, efectivamente, lo que hagamos dentro de esta función va
a afectar de una manera directa al objeto y con esto es donde estamos aplicando polimorfismo.
Pero vamos por parte.
Tranquilos, no se desesperen.
Lo vamos a ir explicando paso por paso.
Primero vamos a explicar qué estamos haciendo acá en esta función que está recibiendo un objeto con
distintas clases.
Y por qué decimos que estamos aplicando polimorfismo?
Lo que yo hago acá es, efectivamente, como la función se llama descuento del auto, yo quiero aplicar
un descuento.
En realidad un.
Accesorio.
Vamos a ponerle accesorio.
Acaso ya cambió el nombre Homo replicarlo Mentalist?
Vamos a hacer un descuento del accesorio donde tengo té, osea, yo acá le voy a pedir como una función,
voy a pedir dos valores T que va a ser el objeto y el monto del descuento.
No sé, digo bueno, sé que el objeto precio.
Voy a hacer la ecuación para aplicar el descuento y que se aplique y que modifique esto de la subclase
dentro de ese objeto yo lo ejecute.
Y si ahora yo aplico descuento a accesorios por ejemplo un 10 por ciento y imprimo el objeto accesorio,
la subclase precio, vemos que efectivamente esto fue un 10 por ciento de descuento porque esto era
10.000.
Si nos fijamos bien que accesorios 10.000 vemos que efectivamente se aplicó el descuento y bien un 10
por ciento de mí de 10 000 000.
Pero estamos viendo que efectivamente yo acabo modificar el objeto y como ya también en pantalla, la
forma de evitar esto es con una librería de Python que se llama Coppi, donde nosotros podemos hacer
una copia del objeto y trabaja directamente con la copia Bagá ronda.
Fíjense que perdón, tengo que ejecutar acá arriba, que ahora si vemos que está cambiado, no?
Bueno, si yo vuelvo a aplicarle el descuento va a cerrar sobre 9000.
Ahora bien, lo hace bien.
Y si yo imprimo la copia?
Vemos que sigue siendo 9000.
Se mantiene bien.
Entonces, de esta manera, nosotros justamente la definición de em polimorfismo dice que se refiere
a una propiedad de la herencia por la que los objetos de distinta subclase pueden responder a una misma
acción.
O sea, efectivamente nosotros convocamos una subclase a raíz de heredarla y pudimos modificar una subclase.
En este caso.
Modificaban el precio Folly morfismo Poli es de muchos muchas subclases donde pueden morfismos se refiere
a modificarse.
Esto es lo que justamente hicimos y esa es una virtud también de la herencia.
Dentro de lo que es programación orientada a objetos, en este caso, llamémoslo el método de descuento
de accesorio, fue capaz de tomar un objeto de distinta subclase y manipular el atributo que en este
caso es el precio.
Esta acción de manipularlo al precio funciona siempre y cuando el objeto tenga ese atributo, pero en
el caso que no lo tenga, porque si yo hubiese puesto otro atributo que no lo tenga, como nos sucedía
cuando recorríamos Alford, no hubiese dado el error.
Entonces el polimorfismo es implícito en Python en todos los objetos.
O sea que todos son hijos de una superclase común del objeto.
No los quiero marear, pero bueno, es estrictamente de esa forma.
Y como funciona el polimorfismo?
Bueno amigos, espero que les haya gustado.
Les dejo un abrazo digita.