0Pricing
Python Academy · Lektion

typing.NamedTuple

Named Tuples um Typhinweise ergänzen

typing.NamedTuple ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.

Eine typisierte Alternative

Die typing.NamedTuple-Basisklasse ist eine moderne, klassenbasierte Möglichkeit, benannte Tupel zu definieren. Sie ergänzt Typannotationen und liest sich wie eine normale Klasse, was die meisten Editoren und Typprüfer besser verstehen als die Factory-Variante.

Klassenbasierte Syntax

Leiten Sie eine Klasse von NamedTuple ab und deklarieren Sie jedes Feld mit einer Typannotation. Das Ergebnis ist weiterhin ein echtes Tupel.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

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

Dasselbe Tupelverhalten

Alles aus der Factory-Variante funktioniert weiterhin: Zugriff über Namen, Zugriff über Index, Entpacken und Unveränderlichkeit.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

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

Standardwerte inline

Geben Sie einem Feld einfach einen Standardwert, indem Sie ihm im Klassenrumpf einen Wert zuweisen. Felder mit Standardwerten müssen nach Feldern ohne Standardwert stehen.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int
    z: int = 0

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

Methoden hinzufügen

Da es sich um eine Klasse handelt, können Sie echte Methoden hinzufügen. Mit der Factory collections.namedtuple ist das nicht ohne Weiteres möglich.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

    def distance_sq(self):
        return self.x ** 2 + self.y ** 2

print(Point(3, 4).distance_sq())

Auch Properties

Sie können außerdem berechnete Properties definieren, die Werte aus den Feldern ableiten.

from typing import NamedTuple

class Rectangle(NamedTuple):
    width: int
    height: int

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

print(Rectangle(3, 4).area)

Hilfsmethoden bleiben erhalten

Die vertrauten Tupel-Hilfsmittel sind weiterhin verfügbar: _replace(), _asdict() und _fields funktionieren auf dieselbe Weise.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

p = Point(1, 2)
print(p._asdict())
print(p._replace(x=9))

Typannotationen dokumentieren die Absicht

Die Annotationen werden zur Laufzeit nicht erzwungen, dokumentieren jedoch die erwarteten Typen und ermöglichen es Tools wie mypy, Fehler zu erkennen, bevor Sie das Programm ausführen.

from typing import NamedTuple

class Employee(NamedTuple):
    name: str
    salary: float
    active: bool = True

e = Employee('Alice', 5000.0)
print(e)

NamedTuple oder Dataclass

So treffen Sie die Wahl:

  • NamedTuple: unveränderlich, tupelähnlich, unterstützt Indexzugriff und Entpacken.
  • dataclass: standardmäßig veränderlich (oder eingefroren), kein Indexzugriff, mehr Konfigurationsmöglichkeiten.
  • Wählen Sie NamedTuple, wenn Tupelverhalten wichtig ist, und dataclass für umfangreichere Datensätze.

Verschachtelung und Komposition

Benannte Tupel lassen sich gut zusammensetzen. Ein Feld kann ein weiteres benanntes Tupel enthalten, sodass strukturierte unveränderliche Daten entstehen.

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int

class Line(NamedTuple):
    start: Point
    end: Point

line = Line(Point(0, 0), Point(3, 4))
print(line.end.y)

Als Rückgabetyp von Funktionen

Annotieren Sie eine Funktion mit Ihrem NamedTuple als Rückgabetyp, damit Editoren die Feldtypen des Ergebnisses kennen. Die Annotation dokumentiert die Struktur des zurückgegebenen Datensatzes.

from typing import NamedTuple

class Stats(NamedTuple):
    minimum: int
    maximum: int

def analyze(nums) -> Stats:
    return Stats(min(nums), max(nums))

r = analyze([5, 2, 8])
print(r.minimum, r.maximum)

Kurze Überprüfung

Welchen Vorteil bietet typing.NamedTuple gegenüber der Factory collections.namedtuple?

Zusammenfassung

Sie haben gelernt, benannten Tupeln Typannotationen hinzuzufügen.

  • Leiten Sie eine Klasse mit annotierten Feldern von typing.NamedTuple ab.
  • Setzen Sie Standardwerte inline und fügen Sie Methoden und Properties hinzu.
  • Die Hilfsmittel _replace, _asdict und _fields funktionieren weiterhin.
  • Bevorzugen Sie diese Variante wegen der besseren Lesbarkeit und Werkzeugunterstützung gegenüber der Factory.

Häufig gestellte Fragen

Ist die Lektion „typing.NamedTuple“ kostenlos?

Ja — der vollständige Text von „typing.NamedTuple“ 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 „typing.NamedTuple“?

Named Tuples um Typhinweise ergänzen 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 4 von 4.

Wie lange dauert die Lektion „typing.NamedTuple“?

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. Die Enum-Klasse
  2. IntEnum und Flag
  3. NamedTuple-Grundlagen
  4. typing.NamedTuple
← Zurück zu Python Academy