Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python-gegevensklasse:een betere manier om gegevens op te slaan

Een Python-gegevensklasse is een normale Python-klasse met de @dataclass decorateur. Het is speciaal gemaakt om gegevens vast te houden. Sinds Python versie 3.7 biedt Python dataklassen aan via een ingebouwde module genaamd dataclass . Er zijn verschillende voordelen ten opzichte van reguliere Python-klassen die we in dit artikel zullen onderzoeken. We zullen ook kijken naar voorbeeldcode en een aantal veelvoorkomende bewerkingen die u mogelijk wilt uitvoeren met gegevensklassen.

Inhoudsopgave

Het voordeel van het gebruik van dataklassen

Waarom zou je een dataklasse gebruiken in plaats van een gewone Python-klasse? Laten we eerst eens kijken naar enkele van de voordelen die een Python-dataklasse te bieden heeft.

Vereist een minimale hoeveelheid code

De @dataclass decorateur voegt veel functionaliteit toe aan een klasse zonder enige zichtbare code toe te voegen. Hierdoor kan uw dataklasse zeer compact zijn en toch veel handige functies bieden. Het enige dat u hoeft te doen, is de velden definiëren waarin uw gegevens moeten worden bewaard. U hoeft geen functies te definiëren.

Vergelijking

Twee Python-dataklassen kunnen worden vergeleken met == omdat de zogenaamde dunder-methode __eq__ automatisch wordt geïmplementeerd. Over het algemeen kunnen we elk Python-object dat deze speciale methode implementeert, vergelijken met andere objecten van hetzelfde type.

Een gegevensklasse afdrukken

Evenzo, omdat __repr__ is geïmplementeerd, kunt u dataklassen afdrukken en er een mooie weergave van krijgen. Dit is vooral handig voor foutopsporing.

Gegevensklassen vereisen typehints

Dataklassen zijn gebouwd rond het nieuwe (ish) type systeem dat Python biedt. Het gebruik van typehints verkleint de kans op bugs en onverwacht gedrag in uw code. U declareert in wezen het type gegevens dat in een variabele moet worden opgeslagen.

Voorbeeld van Python-gegevensklasse

Hier is een voorbeeld van een dataklasse op het werk:

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')

Standaardwaarden

Een gegevensklasse kan standaardwaarden hebben. Het toewijzen van standaardwaarden is net zo eenvoudig als het toewijzen van een waarde aan een variabele. Om onze kaartklasse bijvoorbeeld de standaardwaarde Hartenvrouw te geven, kunnen we het volgende doen:

from dataclasses import dataclass

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

Een dataklasse converteren naar JSON

Een veelvoorkomende use-case is om uw mooi gestructureerde gegevensklasse naar JSON te converteren. Bijvoorbeeld als u de gegevens naar een database wilt exporteren of naar de browser wilt sturen. Het slechte nieuws hier:er is geen ingebouwde manier om een ​​dataklasse naar JSON te converteren.

Het goede nieuws is dat er een Python-pakket is met de naam dataclasses-json dat de taak vereenvoudigt. Het vereist echter een extra decorateur. U moet het pakket installeren met de pip install-opdracht of iets als Pipenv, bij voorkeur in een virtuele omgeving. Bijvoorbeeld:

$ pip install dataclasses-json

Hier is een voorbeeld van hoe u het pakket kunt gebruiken:

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

Een andere methode is om Python-overerving te gebruiken en over te nemen van de JSONEncoder-klasse om uw eigen aangepaste encoder te maken. Het voordeel hiervan is dat u geen extern pakket hoeft te installeren. Hoe je dit doet, lees je in deze blogpost.

Blijf leren

  • Het Python attrs-pakket heeft een geavanceerde versie van de native Python-gegevensklasse
  • De officiële documentatie op Python.org
  • Hoe meerdere waarden in Python te retourneren

Python

  1. Python-gegevenstypen
  2. Python Type Conversie en Type Casting
  3. Python-operators
  4. Aangepaste Python-uitzonderingen
  5. Objectgeoriënteerd programmeren in Python
  6. Python-overerving
  7. Hoe datacenterconsolidatie de manier verandert waarop we gegevens opslaan
  8. type() en isinstance() in Python met voorbeelden
  9. Java - Gegevensstructuren
  10. Gegevensabstractie in C++
  11. Gegevensinkapseling in C++