Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Python

Python-Datenklasse:Eine bessere Möglichkeit, Daten zu speichern

Eine Python-Datenklasse ist eine reguläre Python-Klasse mit dem @dataclass Dekorateur. Es wurde speziell zum Speichern von Daten erstellt. Seit der Python-Version 3.7 bietet Python Datenklassen über ein eingebautes Modul namens dataclass an . Es gibt mehrere Vorteile gegenüber regulären Python-Klassen, die wir in diesem Artikel untersuchen werden. Wir sehen uns auch Beispielcode und einige gängige Operationen an, die Sie möglicherweise mit Datenklassen ausführen möchten.

Inhaltsverzeichnis

Der Vorteil der Verwendung von Datenklassen

Warum sollten Sie eine Datenklasse anstelle einer regulären Python-Klasse verwenden? Schauen wir uns zunächst einige der Vorteile an, die eine Python-Datenklasse zu bieten hat.

Erfordert eine minimale Menge an Code

Die @dataclass decorator fügt einer Klasse viele Funktionen hinzu, ohne sichtbaren Code hinzuzufügen. Dadurch kann Ihre Datenklasse sehr kompakt sein und dennoch viele nützliche Funktionen bieten. Sie müssen lediglich die Felder für Ihre Daten definieren. Sie müssen keine Funktionen definieren.

Vergleich

Zwei Python-Datenklassen können mit == verglichen werden weil die sogenannte Dunder-Methode __eq__ automatisch implementiert wird. Im Allgemeinen können wir jedes Python-Objekt, das diese spezielle Methode implementiert, mit anderen Objekten desselben Typs vergleichen.

Drucken einer Datenklasse

Ebenso, weil __repr__ implementiert ist, können Sie Datenklassen drucken und erhalten eine schöne Darstellung davon. Dies ist besonders nützlich zum Debuggen.

Datenklassen erfordern Typhinweise

Datenklassen sind um das neue (ish) Typsystem herum aufgebaut, das Python anbietet. Die Verwendung von Typhinweisen verringert die Wahrscheinlichkeit von Fehlern und unerwartetem Verhalten in Ihrem Code. Sie deklarieren im Wesentlichen den Datentyp, der in einer Variablen gespeichert werden soll.

Beispiel für eine Python-Datenklasse

Hier ist ein Beispiel für eine funktionierende Datenklasse:

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

Standardwerte

Eine Datenklasse kann Standardwerte haben. Das Zuweisen von Standardwerten ist so einfach wie das Zuweisen eines Werts zu einer Variablen. Damit unsere Card-Klasse beispielsweise den Standardwert Herzdame hat, können wir wie folgt vorgehen:

from dataclasses import dataclass

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

Konvertieren einer Datenklasse in JSON

Ein häufiger Anwendungsfall ist die Konvertierung Ihrer schön strukturierten Datenklasse in JSON. Z. B. wenn Sie die Daten in eine Datenbank exportieren oder an den Browser senden möchten. Die schlechte Nachricht hier:Es gibt keine integrierte Möglichkeit, eine Datenklasse in JSON zu konvertieren.

Die gute Nachricht ist, dass es ein Python-Paket namens dataclasses-json gibt, das die Aufgabe vereinfacht. Es erfordert jedoch einen zusätzlichen Dekorateur. Sie müssen das Paket mit dem Befehl pip install oder etwas wie Pipenv installieren, vorzugsweise in einer virtuellen Umgebung. Zum Beispiel:

$ pip install dataclasses-json

Hier ist ein Beispiel dafür, wie Sie das Paket verwenden können:

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

Eine andere Methode besteht darin, Python-Vererbung zu verwenden und von der JSONEncoder-Klasse zu erben, um Ihren eigenen benutzerdefinierten Encoder zu erstellen. Der Vorteil hierbei ist, dass Sie kein externes Paket installieren müssen. Wie das geht, erfahren Sie in diesem Blogbeitrag.

Lerne weiter


Python

  1. Python-Datentypen
  2. Python-Typkonvertierung und Typumwandlung
  3. Python-Operatoren
  4. Benutzerdefinierte Python-Ausnahmen
  5. Python objektorientierte Programmierung
  6. Python-Vererbung
  7. Wie die Konsolidierung von Rechenzentren die Art und Weise verändert, wie wir Daten speichern
  8. type() und isinstance() in Python mit Beispielen
  9. Java - Datenstrukturen
  10. Datenabstraktion in C++