Test: Descubre qué bootcamp es para ti

whatsapp keepcoding

¿Cómo usar import dataclasses en Python?

| Última modificación: 3 de febrero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

Si alguna vez has escrito clases en Python, sabrás que definir atributos, inicializarlos en el constructor y agregar métodos como repr y eq puede ser repetitivo. Para estos casos podemos usar import dataclasses, un módulo que facilita la creación de clases al eliminar código redundante y mejorar la legibilidad.

En este artículo aprenderás qué es import dataclasses, cómo utilizarlo y cuáles son sus ventajas.

import dataclasses en python

¿Qué son las dataclasses?

Supongamos que debes completar un formulario con tu nombre, dirección y número de teléfono cada vez que realizas un pedido en una tienda online. Sería tedioso escribirlo una y otra vez. Pero ¿qué pasaría si el sistema ya tuviera un formulario prellenado con tus datos y solo necesitaras cambiar lo necesario? Esta es una situación bastante recurrente cuando hacemos compras en línea, nos encontramos con que ponemos nuestro correo y aparecen los indicios de nuestros datos personales, o nos logueamos y ya los datos están cargados.

Las dataclasses en Python funcionan de manera similar: en lugar de escribir una y otra vez los métodos básicos de una clase, import dataclasses lo hace por ti de forma automática.

¿Qué es import dataclasses?

El módulo import dataclasses fue introducido en Python 3.7 y proporciona un decorador llamado dataclass que genera automáticamente métodos especiales en una clase, como:

  • init para inicializar los atributos.
  • repr para representar la clase como una cadena.
  • eq para comparar instancias.
  • Métodos de ordenación lt, le, gt y ge cuando se activan.

Esto permite definir clases de una forma más limpia y directa.

¿Cómo usar import dataclasses en Python?

  • Crear una clase con dataclass: La forma más simple de usar import dataclasses es aplicar el decorador dataclass a una clase:
from dataclasses import dataclass

@dataclass
class Persona:
nombre: str
edad: int

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Aquí, Python genera automáticamente el método init, por lo que puedes instanciar la clase sin definirlo manualmente:

p = Persona("Juan", 30)
print(p)

Esto imprimirá algo como:

Persona(nombre='Juan', edad=30)
  • Usar valores por defecto: Puedes definir valores por defecto para los atributos de la clase en import dataclasses:
@dataclass
class Persona:
nombre: str
edad: int = 18

Así, si no proporcionas un valor para edad al instanciar la clase, tomará el valor por defecto.

p = Persona("Ana")
print(p) # Persona(nombre='Ana', edad=18)
  • Evitar valores mutables como valores predeterminados: Python recomienda no usar valores mutables como listas o diccionarios directamente como valores predeterminados. Para esto, dataclasses ofrece la función field:
from dataclasses import dataclass, field

@dataclass
class Persona:
nombre: str
hobbies: list = field(default_factory=list)

Sin field, todas las instancias compartirían la misma lista, lo que podría generar errores inesperados.

  • Hacer una dataclass inmutable: Si deseas que los valores de una instancia no puedan modificarse después de su creación, usa el parámetro frozen:
@dataclass(frozen=True)
class Persona:
nombre: str
edad: int

Ahora, si intentas cambiar un atributo, obtendrás un error:

p = Persona("Luis", 25)
p.edad = 30 # Esto generará un error
  • Comparación de objetos con dataclasses: Por defecto, las dataclasses implementan el método eq, lo que permite comparar instancias de manera sencilla:
p1 = Persona("Carlos", 40)
p2 = Persona("Carlos", 40)

print(p1 == p2) # True

Si necesitas que los objetos también se puedan ordenar, debes activar la opción order:

@dataclass(order=True)
class Producto:
nombre: str
precio: float

Ahora se pueden comparar las instancias de la clase basadas en los atributos definidos:

p1 = Producto("Laptop", 1200)
p2 = Producto("Teléfono", 800)

print(p1 > p2) # True, porque 1200 es mayor que 800
  • Conversión de dataclasses a diccionarios: Para convertir una instancia de una dataclass en un diccionario, usa la función asdict:
from dataclasses import asdict

p = Persona("Elena", 35)
print(asdict(p))

Salida:

{'nombre': 'Elena', 'edad': 35}
  • Usar dataclasses para herencia: Puedes crear clases que hereden de otras dataclasses sin problemas:
@dataclass
class Empleado(Persona):
salario: float

Ahora, una instancia de Empleado incluirá los atributos heredados de Persona junto con los nuevos.

e = Empleado("Marcos", 28, 2500.0)
print(e)

Salida:

Empleado(nombre='Marcos', edad=28, salario=2500.0)
import dataclasses en python

Si quieres llevar tus habilidades de programación al siguiente nivel y prepararte para un futuro en tecnología, KeepCoding es el lugar perfecto para hacerlo. Con nuestro Bootcamp de programación inicial aprenderás las habilidades más demandadas del mercado y te convertirás en un profesional altamente cualificado en poco tiempo. No sigas postergando tu transformación, el mundo IT te está esperando.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado