Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Data Classes Python: Gerencie Dados com Sintaxe Moderna e Eficiente

Data Classes Python: Gerencie Dados com Sintaxe Moderna e Eficiente

Uma data class Python é uma classe Python regular que tem o decorador @dataclass. Ela é especificamente criada para armazenar dados. Desde a versão 3.7 do Python, o Python oferece data classes através de um módulo embutido chamado dataclasses. Existem várias vantagens sobre classes Python regulares que exploraremos neste artigo. Também veremos código de exemplo e algumas operações comuns que você pode querer realizar com data classes.

A vantagem de usar data classes

Por que você deveria usar uma data class em vez de uma classe Python regular? Primeiro, vamos ver algumas das vantagens que uma data class Python tem a oferecer.

Requer uma quantidade mínima de código

O decorador @dataclass adiciona muita funcionalidade a uma classe sem adicionar nenhum código visível. Isso permite que sua data class seja muito compacta enquanto ainda oferece muitos recursos úteis. Tudo que você precisa fazer é definir os campos para armazenar seus dados. Você não precisa definir nenhuma função.

Comparação

Duas data classes Python podem ser comparadas com == porque o chamado método dunder __eq__ é implementado automaticamente. Em geral, podemos comparar qualquer objeto Python que implemente este método especial a outros objetos do mesmo tipo.

Imprimindo uma data class

Similarmente, como __repr__ é implementado, você pode imprimir data classes e obter uma boa representação delas. Isso é especialmente útil para depuração.

Data classes exigem type hints

Data classes são construídas em torno do sistema de tipos (relativamente) novo que o Python oferece. Usar type hints reduz as chances de bugs e comportamento inesperado no seu código. Você essencialmente declara o tipo de dado que deve ser armazenado em uma variável.

Exemplo de data class Python

Aqui está um exemplo de uma data class em ação:

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 padrão

Uma data class pode ter valores padrão. Atribuir valores padrão é tão simples quanto atribuir um valor a uma variável. Por exemplo, para fazer nossa classe Card ter um valor padrão de Dama de copas, podemos fazer o seguinte:

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

Convertendo uma data class para JSON

Um caso de uso comum é converter sua data class bem estruturada para JSON. Ex., se você quiser exportar os dados para um banco de dados, ou enviá-los para o navegador. A má notícia aqui: não há maneira embutida de converter uma data class para JSON.

A boa notícia é que existe um pacote Python chamado dataclasses-json que simplifica a tarefa. No entanto, requer um decorador extra. Você precisará instalar o pacote com o comando pip install ou algo como Pipenv, preferencialmente dentro de um ambiente virtual. Por exemplo:

$ pip install dataclasses-json

Aqui está um exemplo de como você pode usar o pacote:

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"}

Outro método é usar herança Python e herdar da classe JSONEncoder para criar seu próprio encoder personalizado. A vantagem aqui é que você não precisa instalar um pacote externo. Você pode aprender como fazer isso neste post do blog.

Continue aprendendo

python

  1. Dominando Tipos de Dados em Python: Guia Prático
  2. Dominando Conversão e Casting de Tipos em Python: Guia Completo
  3. Dominando Operadores em Python: Guia Completo
  4. Dominando Exceções Customizadas em Python: Guia Prático
  5. Dominando Programação Orientada a Objetos em Python: Classes, Herança, Encapsulamento e Polimorfismo
  6. Dominando Herança em Python: Conceitos, Sintaxe e Exemplos Práticos
  7. Consolidação de Data Center: Cortando Custos, Aumentando Segurança e Impulsionando Eficiência
  8. Entendendo type() e isinstance() em Python: Exemplos Práticos
  9. Estruturas de Dados em Java: Explorando Classes Core e Collections Framework
  10. Dominando Abstração de Dados em C++: Simplifique Design com Separação Interface-Implementação