Duck Typing es un sistema de tipos utilizado en lenguajes dinámicos. Por ejemplo, Python, Perl, Ruby, PHP, Javascript, etc. donde el tipo o la clase de un objeto es menos importante que el método que define. Usando Duck Typing, no verificamos los tipos en absoluto. En cambio, verificamos la presencia de un método o atributo dado.
El nombre Duck Typing proviene de la frase:
“Si parece un pato y grazna como un pato, es un pato”
Ejemplo:
# Python program to demonstrate # duck typing class Specialstring: def __len__(self): return 21 # Driver's code if __name__ == "__main__": string = Specialstring() print(len(string))
Producción:
21
En este caso, llamamos al método que len()
da el valor de retorno del __len__
método. Aquí __len__
el método define la propiedad de la clase.Specialstring
El tipo del objeto en sí no es significativo en este sentido, no declaramos el argumento en los prototipos de métodos. Esto significa que los compiladores no pueden realizar la verificación de tipos. Por lo tanto, lo que realmente importa es si el objeto tiene atributos particulares en tiempo de ejecución. Por lo tanto, la tipificación de pato se implementa mediante lenguajes dinámicos. Pero ahora algunos de los lenguajes estáticos como Haskell también lo admiten. Pero, Java/C# aún no tiene esta capacidad.
Ejemplo: ahora, veamos cómo se usa un objeto en cualquier otra circunstancia hasta que no sea compatible.
# Python program to demonstrate # duck typing class Bird: def fly(self): print("fly with wings") class Airplane: def fly(self): print("fly with fuel") class Fish: def swim(self): print("fish swim in sea") # Attributes having same name are # considered as duck typing for obj in Bird(), Airplane(), Fish(): obj.fly()
Producción:
fly with wings fly with fuel
Traceback (most recent call last): File "/home/854855e5570b9ce4a9e984209b6a1c21.py", line 20, in obj.fly() AttributeError: 'Fish' object has no attribute 'fly'
En este ejemplo, podemos ver que una clase admite algún método, podemos modificarlo o darle una nueva funcionalidad. El énfasis de tipeo de pato es lo que el objeto realmente puede hacer, en lugar de lo que es el objeto.
Publicación traducida automáticamente
Artículo escrito por itsvinayak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA