dataclasses

dataclasses wurden in Python 3.7 eingeführt und sind ein spezieller Shortcut, mit der wir Klassen erstellen können, die Daten speichern. Python bietet einen speziellen Dekorator, wenn wir eine solche Klasse erstellen wollen.

Bemerkung

Für Tabellendaten verwende ich im Allgemeinen pandas Series oder DataFrames und wenn ich Matrizen mit Zahlen speichern muss, verwende ich Numpy.

Nehmen wir an, wir wollen eine Klasse speichern, die ein Item repräsentiert mit summary, owner, state und id. Wir können eine solche Klasse definieren mit:

>>> from dataclasses import dataclass
>>> @dataclass
... class Item:
...     summary: str = None
...     owner: str = None
...     state: str = "todo"
...     id: int = None

Der @dataclass-Dekorator erstellt die __init__- und __repr__-Methoden. Wenn ich mir die Instanz der Klasse ausgeben lasse, erhalte ich den Klassennamen und die Attribute:

>>> i1
Item(summary='My first item', owner='veit', state='todo', id=1)

Im Allgemeinen werden Datenklassen als syntaktischer Zucker für die Erstellung von Klassen, die Daten speichern, verwendet. Ihr könnt euren Klassen zusätzliche Funktionalität verleihen, indem ihr Methoden definiert. Wir werden der Klasse eine Methode hinzufügen, die ein Item-Objekt aus einem Dict erstellt:

>>> @dataclass
... class Item:

...     @classmethod
...     def from_dict(cls, d):
...         return Item(**d)
...
>>> item_dict = {"summary": "My first item", "owner": "veit", "state": "todo", "id": 1}
>>> Item.from_dict(item_dict)
Item(summary='My first item', owner='veit', state='todo', id=1)