Zum Hauptinhalt springen

Dataclasses verwenden

Klassisch vs dataclass

from dataclasses import dataclass

@dataclass
class Aufgabe:
titel: str
erledigt: bool = False
punkte: int = 0

a = Aufgabe("Hausaufgaben")
print(a)
print(a.titel)
a.erledigt = True

Dataclass erzeugt automatisch nützliche Basics (z. B. lesbare Ausgabe).

Viele Aufgaben

todo = [
Aufgabe("Mathe", punkte=2),
Aufgabe("Sport", erledigt=True),
]
offen = [t for t in todo if not t.erledigt]

Rate mal!

Braucht man __init__ von Hand?

Auflösung

Meist nein – dataclass erzeugt es aus den Feldern.

Probiere es selbst

Experiment 1

dataclass Spieler.

Experiment 2

Default-Wert.

Experiment 3

Liste filtern.

Fehlerdetektiv

Felder ohne Typ-Hint – dataclass mag Typen an Feldern.

Übungen

Level 1

Buch mit titel, autor.

Level 2

Default seiten: int = 0.

Level 3

Liste von Büchern, Titel printen.

Level-1-Lösung
from dataclasses import dataclass

@dataclass
class Buch:
titel: str
autor: str

print(Buch("Python", "Club"))

Mini-Quiz

Mini-QuizWofuer sind Dataclasses besonders gut?

Dataclass sitzt! Mini-Projekt: Aufgabenmodell.