Saltar a contenido

Type Hints y Dataclasses: Código Robusto y Limpio

En versiones modernas de Python (3.7+), contamos con herramientas potentes para que nuestras estructuras de datos sean más claras y menos propensas a errores. Los Type Hints nos dicen qué tipo de dato esperar, y las Dataclasses eliminan el código repetitivo al crear clases.


1. Type Hints (Anotaciones de Tipo)

Python es un lenguaje de tipado dinámico, lo que significa que una variable puede cambiar de tipo. Sin embargo, en proyectos grandes, esto puede causar confusión. Los Type Hints nos permiten especificar qué tipo de dato debe recibir una función y qué debe devolver.

  • Sintaxis: variable: tipo = valor
  • Funciones: def funcion(parametro: tipo) -> tipo_retorno:

2. Dataclasses: Clases Inteligentes

Escribir el método __init__, __repr__ y __eq__ para clases que solo guardan datos es aburrido y propenso a errores. Las Dataclasses automatizan todo este proceso con un simple decorador.

Beneficios:

  1. Código reducido: Escribes mucho menos que en una clase normal.
  2. Representación clara: Al imprimir el objeto, verás sus datos legibles automáticamente.
  3. Comparación: Puedes comparar dos objetos (obj1 == obj2) por su contenido de inmediato.

Ejemplo Comparativo

En lugar de escribir una clase larga con un constructor manual, usamos el decorador @dataclass:

from dataclasses import dataclass

@dataclass class Cliente: nombre: str id: int

Con solo esas líneas, Python ya creó el constructor por ti. Ahora puedes hacer: c = Cliente("Ana", 101).


Reto: Modelado de Empleados

Vamos a crear una estructura profesional para gestionar empleados usando estas herramientas.

Instrucciones:

  1. Importa dataclass desde el módulo dataclasses.
  2. Crea una Dataclass llamada Empleado.
  3. Define tres atributos con sus respectivos Type Hints:
    • nombre de tipo cadena (str).
    • puesto de tipo cadena (str).
    • salario de tipo flotante (float).
  4. Crea una instancia de esta clase llamada emp con los datos: "Luis", "Developer", 3500.0.

# Define tu estructura de datos moderna: