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

Classe de dados Python:uma maneira melhor de armazenar dados


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

Índice

A vantagem de usar classes de dados


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

Requer uma quantidade mínima de código


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

Comparação


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

Imprimindo uma classe de dados


Da mesma forma, porque __repr__ é implementado, você pode imprimir classes de dados e obter uma boa representação disso. Isso é especialmente útil para depuração.

As classes de dados requerem dicas de tipo


As classes de dados são construídas em torno do novo sistema de tipos que o Python oferece. O uso de dicas de tipo reduz as chances de bugs e comportamento inesperado em seu código. Você essencialmente declara o tipo de dados que deve ser armazenado em uma variável.

Exemplo de classe de dados Python


Aqui está um exemplo de uma classe de dados no trabalho:
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 classe de dados pode ter valores padrão. A atribuição de valores padrão é tão simples quanto atribuir um valor a uma variável. Por exemplo, para fazer com que nossa classe Card tenha um valor padrão de Rainha de copas, podemos fazer o seguinte:
from dataclasses import dataclass

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

Convertendo uma classe de dados em JSON


Um caso de uso comum é converter sua classe de dados bem estruturada em JSON. Por exemplo, se você deseja exportar os dados para um banco de dados ou enviá-los para o navegador. A má notícia aqui:não há uma maneira integrada de converter uma classe de dados em 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, de preferência 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 a herança do Python e herdar da classe JSONEncoder para criar seu próprio codificador personalizado. A vantagem aqui é que você não precisa instalar um pacote externo. Você pode aprender como fazer isso nesta postagem do blog.

Continue aprendendo


python

  1. Tipos de dados Python
  2. Conversão de tipo Python e conversão de tipo
  3. Operadores Python
  4. Exceções personalizadas do Python
  5. Programação Orientada a Objetos Python
  6. Herança Python
  7. Como a consolidação do data center está mudando a maneira como armazenamos dados
  8. type() e isinstance() em Python com exemplos
  9. Java - Estruturas de Dados
  10. Abstração de dados em C++