Datenklassen in Python mit @dataclass 

You are here:

Python bietet mit der `dataclass`-Dekorator aus dem `dataclasses`-Modul eine bequeme Möglichkeit, Klassen zu erstellen, die hauptsächlich dazu dienen, Daten zu speichern und zu verwalten. Die `@dataclass`-Dekoration automatisiert viele gängige Methoden, die Du sonst manuell schreiben müsstest, wie zum Beispiel `__init__`, `__repr__` und `__eq__`.

Einfaches Beispiel einer Datenklasse

Um eine Datenklasse zu erstellen, importiere zunächst das `dataclasses`-Modul und dekoriere Deine Klasse mit `@dataclass`:

from dataclasses import dataclass

@dataclass

class Person:

    name: str

    age: int

Nun erstelle zwei Instanzen der Person-Klasse:

alice = Person("Alice", 30)

bob = Person("Bob", 25)

Da die `@dataclass`-Dekoration die `__repr__`-Methode automatisch generiert, können wir die Objekte direkt ausgeben:

print(alice)  # Ausgabe: Person(name='Alice', age=30)

print(bob)    # Ausgabe: Person(name='Bob', age=25)

Datenklassen mit Standardwerten

Du kannst auch Standardwerte für Attribute in Datenklassen angeben. Hier ist ein Beispiel:

from dataclasses import dataclass

@dataclass

class Person:

    name: str

    age: int

    city: str = "Berlin"

Wenn Du nun eine Person-Instanz ohne Angabe der `city` erstellst, wird der Standardwert “Berlin” verwendet:

charlie = Person("Charlie", 22)

print(charlie)  # Ausgabe: Person(name='Charlie', age=22, city='Berlin')

Unveränderliche Datenklassen

Du kannst eine Datenklasse auch unveränderlich machen, indem Du das `frozen`-Argument auf `True` setzt:

from dataclasses import dataclass

@dataclass(frozen=True)

class ImmutablePerson:

    name: str

    age: int

Versuchst Du nun, ein Attribut einer unveränderlichen Datenklasse zu ändern, wird eine `FrozenInstanceError`-Exception ausgelöst:

dave = ImmutablePerson("Dave", 35)

dave.age = 36  # Auslösen einer FrozenInstanceError

Die Verwendung von `@dataclass` in Python erleichtert die Erstellung von Klassen, die in erster Linie zur Speicherung von Daten dienen. Es automatisiert gängige Methoden und bietet Funktionen wie Standardwerte und Unveränderlichkeit. Durch die Verwendung von Datenklassen kannst Du Deinen Code sauberer, kürzer und besser lesbar gestalten.