Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Data Classes en Python: gestione datos con sintaxis moderna

Data Classes en Python: gestione datos con sintaxis moderna

Una data class de Python es una clase regular que tiene el decorador @dataclass. Está creada específicamente para contener datos. Desde Python 3.7, Python ofrece data classes a través de un módulo integrado llamado dataclasses. Hay varias ventajas sobre clases regulares que exploraremos. También veremos código de ejemplo y un par de operaciones comunes.

Ventajas de usar data classes

Requiere una cantidad mínima de código

El decorador @dataclass añade mucha funcionalidad a una clase sin añadir código visible. Esto permite que tu data class sea muy compacta mientras ofrece muchas características útiles. Todo lo que necesitas es definir los campos para guardar tus datos. No necesitas definir ninguna función.

Comparación

Dos data classes de Python pueden compararse con == porque el método especial __eq__ se implementa automáticamente. En general, podemos comparar cualquier objeto Python que implemente este método especial con otros objetos del mismo tipo.

Imprimir una data class

De igual forma, como se implementa __repr__, puedes imprimir data classes y obtener una representación bonita. Esto es especialmente útil para depuración.

Las data classes requieren type hints

Las data classes se construyen alrededor del sistema de tipos (relativamente) nuevo que ofrece Python. Usar type hints reduce la probabilidad de bugs y comportamiento inesperado. Básicamente declaras el tipo de dato que debe almacenarse en una variable.

Ejemplo de data class en Python

Aquí tienes un ejemplo de data class en acción:

from dataclasses import dataclass

@dataclass
class Card:
    rank: str
    suit: str

card1 = Card("Q", "hearts")
card2 = Card("Q", "hearts")
print(card1 == card2)  # True
print(card1.rank)      # 'Q'
print(card1)           # Card(rank='Q', suit='hearts')

Valores por defecto

Una data class puede tener valores por defecto. Asignarlos es tan simple como asignar un valor a una variable. Por ejemplo, para que nuestra clase Card tenga por defecto la Q de corazones:

from dataclasses import dataclass

@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

Convertir una data class a JSON

Un caso de uso común es convertir tu data class bien estructurada a JSON. P. ej., si quieres exportar datos a una base de datos o enviarlos al navegador. La mala noticia: no hay forma integrada de convertir una data class a JSON.

La buena noticia: hay un paquete llamado dataclasses-json que simplifica la tarea. Requiere un decorador extra. Tendrás que instalar el paquete con pip install o algo como Pipenv, preferiblemente dentro de un entorno virtual. Por ejemplo:

$ pip install dataclasses-json

Aquí tienes un ejemplo de cómo usar el paquete:

from dataclasses import dataclass
from dataclasses_json import dataclass_json

@dataclass_json
@dataclass
class Card:
    rank: str = 'Q'
    suit: str = 'hearts'

card = Card()
print(card.to_json())
{"rank": "Q", "suit": "hearts"}

Otro método es usar herencia en Python y heredar de JSONEncoder para crear tu propio encoder personalizado. La ventaja es que no necesitas instalar un paquete externo. Puedes aprender cómo hacerlo en este post.

Seguir aprendiendo

python

  1. Consolidación Data Center: Reduciendo Costes, Mejorando Seguridad y Eficiencia
  2. Dominando la Abstracción de Datos en C++: Simplifica el Diseño con Separación Interfaz-Implementación
  3. Encapsulamiento de Datos en C++: Protege tu Código
  4. Dominando tipos de datos en Python: Guía práctica
  5. Dominando conversión y casting de tipos en Python: Guía completa
  6. Dominando operadores en Python: Guía completa
  7. Dominando Excepciones Personalizadas en Python: Guía Práctica
  8. Dominando la Programación Orientada a Objetos en Python: Clases, Herencia, Encapsulación y Polimorfismo
  9. Dominando la Herencia en Python: Conceptos, Sintaxis y Ejemplos Prácticos
  10. Entendiendo type() e isinstance() en Python: ejemplos prácticos
  11. Estructuras de Datos en Java: Explorando Clases Core y Collections Framework