0Pricing
Python Academy · Lektion

Eine Dataclass definieren

Verwenden Sie @dataclass, um Boilerplate-Code zu vermeiden.

Eine Dataclass definieren ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Dataclasses?

Wenn Sie eine Klasse schreiben, die hauptsächlich Daten enthält, wiederholen Sie oft denselben Boilerplate-Code: ein __init__, ein __repr__ und ein __eq__. Das Modul dataclasses erzeugt all dies für Sie aus einfachen Feldd deklarationen.

  • Weniger Code zum Schreiben und Lesen.
  • Weniger Möglichkeiten für Tippfehler in __init__.
  • Seit Python 3.7 in der Standardbibliothek enthalten.

Der herkömmliche Ansatz

Hier ist eine einfache Klasse, die einen Punkt speichert. Beachten Sie, wie viel Code erforderlich ist, nur um zwei Zahlen zu speichern.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

p = Point(1, 2)
print(p.x, p.y)

Der @dataclass-Dekorator

Wenden Sie @dataclass oberhalb einer Klasse an und deklarieren Sie Felder mit Typannotationen. Python erzeugt __init__ automatisch.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x, p.y)

Automatisches __repr__

Dataclasses erzeugen außerdem ein lesbares __repr__, sodass beim Ausgeben des Objekts dessen Felder statt einer Speicheradresse angezeigt werden.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(3, 4))

Automatisches __eq__

Zwei Dataclass-Instanzen sind gleich, wenn alle ihre Felder gleich sind. Sie müssen __eq__ nicht von Hand schreiben.

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

print(Point(1, 2) == Point(1, 2))
print(Point(1, 2) == Point(9, 9))

Typannotationen sind erforderlich

Jedes Feld muss eine Typannotation haben. Die Annotation teilt der Dataclass-Mechanik mit, dass es sich bei dem Namen um ein Feld handelt. Eine Zuweisung ohne Annotation wird zu einem normalen Klassenattribut und nicht zu einem Feld.

from dataclasses import dataclass

@dataclass
class User:
    name: str
    age: int

u = User('Alice', 30)
print(u)

Methoden hinzufügen

Eine Dataclass ist weiterhin eine normale Klasse. Sie können gewöhnliche Methoden hinzufügen, die die erzeugten Felder verwenden.

from dataclasses import dataclass

@dataclass
class Rectangle:
    width: int
    height: int

    def area(self):
        return self.width * self.height

r = Rectangle(3, 4)
print(r.area())

Felder verändern

Standardmäßig sind Dataclass-Instanzen veränderlich. Sie können Felder daher nach der Erstellung wie normale Attribute neu zuweisen.

from dataclasses import dataclass

@dataclass
class Counter:
    value: int

c = Counter(0)
c.value += 5
print(c.value)

asdict und astuple

Die Hilfsfunktionen asdict() und astuple() wandeln eine Instanz in ein Dictionary oder ein Tupel um, was für die Serialisierung praktisch ist.

from dataclasses import dataclass, asdict, astuple

@dataclass
class Point:
    x: int
    y: int

p = Point(1, 2)
print(asdict(p))
print(astuple(p))

Verschachtelte Dataclasses

Ein Dataclass-Feld kann selbst eine weitere Dataclass sein. Der erzeugte __repr__ und asdict() durchlaufen auch verschachtelte Strukturen rekursiv.

from dataclasses import dataclass, asdict

@dataclass
class Address:
    city: str

@dataclass
class Person:
    name: str
    address: Address

p = Person('Bob', Address('Paris'))
print(asdict(p))

Wann Sie Dataclasses verwenden sollten

Verwenden Sie eine Dataclass, wenn eine Klasse hauptsächlich zusammengehörige Werte bündelt.

  • Konfigurationsobjekte.
  • Von einer Funktion zurückgegebene Datensätze.
  • Einfache Werttypen wie Koordinaten oder Geldbeträge.

Bei Klassen, die eher durch Verhalten als durch Daten geprägt sind, ist eine normale Klasse möglicherweise klarer.

Kurze Überprüfung

Was erzeugt der Dekorator @dataclass automatisch?

Zusammenfassung

Sie haben gelernt, mit @dataclass Boilerplate-Code zu vermeiden.

  • Deklarieren Sie Felder mit Typannotationen.
  • __init__, __repr__ und __eq__ werden erzeugt.
  • Verwenden Sie asdict() und astuple(), um Instanzen umzuwandeln.
  • Sie können weiterhin Methoden hinzufügen und Dataclasses verschachteln.

Häufig gestellte Fragen

Ist die Lektion „Eine Dataclass definieren“ kostenlos?

Ja — der vollständige Text von „Eine Dataclass definieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Eine Dataclass definieren“?

Verwenden Sie @dataclass, um Boilerplate-Code zu vermeiden. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Eine Dataclass definieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Eine Dataclass definieren
  2. Standardwerte und field()
  3. Optionen für Unveränderlichkeit und Vergleiche
  4. Die attrs-Bibliothek
← Zurück zu Python Academy