Want to create interactive content? It’s easy in Genially!

Get started free

5100_UD02_3.3

CESUR

Created on February 2, 2026

Start designing with a free template

Discover more than 1500 professional designs like these:

Puzzle Diagram

Gear Diagram

Square Timeline Diagram

Timeline Diagram

Timeline Diagram 3

Timeline Diagram 4

Timeline Diagram 2

Transcript

Polimorfismo y duck typing

Filosofía Duck Typing

Concepto de polimorfismo

Protocolos de interacción

Sistemas de plugins

Flexibilidad en procesadores

Interfaces y orden

Flexibilidad en procesadores

Imagínate una app para procesar archivos. Tienes una función genérica procesar_documento() que puede recibir objetos DocumentoPDF, DocumentoWord o DocumentoHTML. Cada uno tiene su propia forma de ejecutar el método extraer_texto(). El código que llama a la función no sabe (ni le importa) qué tipo de archivo es; solo confía en que el método existe. Si mañana quieres soportar archivos de Excel, solo creas la clase nueva con ese método y listo, el sistema ya lo soporta sin cambios.

Sistemas de plugins

El polimorfismo es el alma de los sistemas de plugins o extensiones. Si tu programa espera objetos que tengan los métodos procesar() y validar(), cualquier clase que los incluya puede conectarse al sistema. Esto fomenta un desarrollo modular donde cada equipo trabaja en sus componentes de forma independiente pero compatible.

Interfaces y orden

Las interfaces abstractas sirven para poner orden en este caos creativo. Python usa el módulo abc (Abstract Base Classes) para definir contratos. Aunque el duck typing te da libertad total, las clases abstractas son geniales para documentar qué métodos debe tener sí o sí una clase y para que Python te avise si se te ha olvidado implementar algo importante.

Filosofía duck typing

Python lleva esto al extremo con el duck typing (tipado de pato). El principio es sencillo: "si camina como un pato y grazna como un pato, entonces es un pato". En lugar de andar preguntando de qué clase es un objeto o de quién hereda, el código simplemente intenta ejecutar el método. Si el objeto lo tiene, adelante; si no, lanza una excepción. Es mucho más ágil que la verificación estricta de otros lenguajes, porque permite que cualquier objeto con la interfaz adecuada encaje, sin importar su árbol genealógico adecuada encaje, sin importar su árbol genealógico.

Concepto de porliformismo

El polimorfismo permite que objetos de diferentes clases respondan a la misma llamada de método, cada uno a su manera. Cuando una función recibe un parámetro y lanza un método, no le importa la clase exacta del objeto, solo que "sepa" responder a esa orden. Este desacoplamiento facilita muchísimo ampliar el sistema: puedes meter tipos nuevos sin tocar ni una línea del código

Protocolos de interacción

La gran ventaja del duck typing es que te permite mezclar objetos que no tienen nada que ver entre sí. Una función que procesa elementos iterables puede recibir una list, una tuple, un set o incluso un objeto tuyo personalizado, siempre que implemente el protocolo de iteración (los métodos _iter_ y _next_). Esto hace que sea muy fácil integrar librerías de terceros que ni siquiera sabían de la existencia de las otras.