El duck typing o tipado de pato es un concepto relacionado con la programación que aplica a ciertos lenguajes orientados a objetos, y que tiene origen en la siguiente frase: "Si camina como un pato y habla como un pato, entonces tiene que ser un pato."
¿Y qué relación tienen los patos con la programación? Pues bien, se trata de un símil en el que los patos son objetos y hablar/andar métodos. Es decir, que si un determinado objeto tiene los métodos que nos interesan, nos basta, siendo su tipo irrelevante.
Definamos una clase Pato con un método hablar().
class Pato:
def hablar(self):
print("¡Cua!, Cua!")
Y llamamos al método de la siguiente forma.
p = Pato()
p.hablar()
# ¡Cua!, Cua!
Hasta aquí nada nuevo, pero vamos a definir una función llama_hablar(), que llama al método hablar() del objeto que se le pase.
def llama_hablar(x):
x.hablar()Cuando Python entra en la función y evalúa x.hablar(), le da igual el tipo al que pertenezca x siempre y cuando tenga el método hablar(). Esto es el duck typing en todo su esplendor.
Si quieres profundizar mas sobre el tema acá te dejo un tutorial extenso hablando del "Duck typing"