Kapitel 23. Attribut-Deskriptoren
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Das Erlernen von Deskriptoren verschafft dir nicht nur Zugang zu einem größeren Toolset, sondern schafft auch ein tieferes Verständnis für die Funktionsweise von Python und ein Verständnis für die Eleganz seines Designs.
Raymond Hettinger, Python-Kernentwickler und -Guru1
Deskriptoren sind eine Möglichkeit, die gleiche Zugriffslogik in mehreren Attributen wiederzuverwenden. Beispielsweise sind Feldtypen in ORMs wie dem Django ORM und SQLAlchemy Deskriptoren, die den Datenfluss von den Feldern in einem Datenbankdatensatz zu den Python-Objektattributen und umgekehrt verwalten.
Ein Deskriptor ist eine Klasse, die ein dynamisches Protokoll implementiert, das aus den Methoden __get__, __set__ und __delete__ besteht. Die Klasse property implementiert das vollständige Deskriptor-Protokoll. Wie bei dynamischen Protokollen üblich, sind Teilimplementierungen in Ordnung. In der Tat implementieren die meisten Deskriptoren, die wir in echtem Code sehen, nur __get__ und __set__, und viele implementieren nur eine dieser Methoden.
Deskriptoren sind ein charakteristisches Merkmal von Python, das nicht nur auf der Anwendungsebene, sondern auch in der Sprachinfrastruktur eingesetzt wird. Benutzerdefinierte Funktionen sind Deskriptoren. Wir werden sehen, wie das Deskriptor-Protokoll es ermöglicht, Methoden als gebundene oder ungebundene ...