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.
Tipp
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 einen Task repräsentiert
mit summary, owner, state und id. Wir können eine solche Klasse
definieren mit:
>>> from dataclasses import dataclass
>>> @dataclass
... class Task:
... 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
Task(summary='My first task', 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 Task-Objekt aus einem Dict erstellt:
>>> @dataclass
... class Task:
... ...
... @classmethod
... def from_dict(cls, d):
... return Task(**d)
...
>>> task_dict = {
... "summary": "My first task",
... "owner": "veit",
... "state": "todo",
... "id": 1,
... }
>>> Task.from_dict(task_dict)
Task(summary='My first task', owner='veit', state='todo', id=1)