Für Klassen, die vor allem Daten halten, erzeugt @dataclass __init__, __repr__ und __eq__ automatisch.
python
from dataclasses import dataclass, field
@dataclass
class Kunde:
name: str
stadt: str = 'Wien'
tags: list[str] = field(default_factory=list) # nie tags: list = [] schreiben!
k = Kunde('Anna')
print(k) # Kunde(name='Anna', stadt='Wien', tags=[])
k.tags.append('vip')
Parameter von @dataclass |
Wirkung |
|---|---|
frozen=True |
Objekt ist nach dem Erzeugen unveränderlich |
order=True |
Erzeugt Vergleiche (<, >), damit sorted funktioniert |
slots=True |
Spart Speicher |
Dataclasses sind ideal, um eine Zeile aus der Datenbank oder einer API als sauberes Objekt abzubilden.