Special methods: magic methods

Python provee un conjunto de métodos que son muy útiles

Dunder methods:

__init__() nos permite inicializar una clase.

__call__() permite que nuestras instances sean callables (funciones)

Hay dos magic methods muy utilizados:

__repr__: para la imprimir instancias: unambiguous representation of an object

__str__: readable representation of an object

Rule of the thumb: cuando escribamos un __repr__ la salida tiene que ser tal que con un copy and past podemos recrear de manera no ambigua dicho objeto

Miremos que sucede antes de introducir __repr__ si hacemos print(instance de Empleados)

La representación es ambigua, no queda clara: es un objeto de empleados en una dirección de memoria

Introduzcamos el método __repr__() con el objetivo de tener una representación no ambigua de la instancia.

El __str__() esta pensado para la presentación al usuario, por lo que es más arbitrario.

Cuando no está implementado, y lo llamamos, recurre a __repr__()

Existen varios special methods Ver en el punto 3.3 en Python Documetnation

Podemos utilizar, entonces, otros dunder methods para automatizar nuestra clase.

Imaginemos que queremos sumar el salario de dos trabajadores.

Veamos otro ejemplo: len mide el numero de elementos de una secuencia

La idea es incorporar estos métodos a la clase para ganar funcionalidad, e.g., comparar, iterar, etc...

Dado lo que hemos visto hasta ahora, vamos a mirar ahora iterables e iteradores.

Ejemplo: iterador