Heim > Backend-Entwicklung > Python-Tutorial > Wie funktioniert der @property Decorator von Python, einschließlich seiner Getter-, Setter- und Deleter-Methoden?

Wie funktioniert der @property Decorator von Python, einschließlich seiner Getter-, Setter- und Deleter-Methoden?

Barbara Streisand
Freigeben: 2024-12-17 20:51:11
Original
562 Leute haben es durchsucht

How Does Python's @property Decorator Work, Including Its Getter, Setter, and Deleter Methods?

Wie funktioniert der @property Decorator in Python?

Der @property Decorator ist ein leistungsstarkes Tool in Python, mit dem wir Eigenschaften definieren können für unsere Kurse. Aber seine Verwendung als Dekorateur kann trotz der Verwendung von Argumenten als Funktion verwirrend sein.

Eigenschaftsobjekte

Der Schlüssel zum Verständnis des Verhaltens des Dekorators liegt in der property()-Funktion. Diese Funktion gibt ein spezielles Deskriptorobjekt zurück, das über zusätzliche Methoden verfügt: Getter, Setter und Deleter.

Eigenschaften mit Dekoratoren erstellen

Die @property-Syntax ist syntaktischer Zucker für Manuelles Definieren eines Eigenschaftsobjekts. Der folgende Code entspricht der @property Decorator-Verwendung:

def foo(self): return self._foo
foo = property(foo)
Nach dem Login kopieren

Wenn wir einer Eigenschaft eine Funktion zuweisen, ersetzen wir die Funktion durch ein Eigenschaftsobjekt.

Decorating Setter und Deleter-Methoden

Die Dekoratoren @property.setter() und @property.deleter(), trotz der Verwendung von x.setter- und x.deleter-Syntax: Erstellen Sie keine neuen Objekte. Stattdessen rufen sie die Getter-, Setter- und Löschmethoden des Eigenschaftsobjekts auf:

x.setter = property().setter(another_setter_function)  # Replace setter
x.deleter = property().deleter(another_deleter_function)  # Replace deleter
Nach dem Login kopieren

Diese Methoden geben neue Eigenschaftsobjekte mit den aktualisierten Setter- oder Löschmethoden zurück.

Verwenden Deskriptormethoden

Eigenschaftsobjekte fungieren als Deskriptorobjekte mit __get__(), __set__() und __delete__() Methoden. Diese Methoden handhaben den Zugriff auf Instanzattribute:

prop.__get__(instance, owner_class): # Access the property
prop.__set__(instance, value): # Set the property
prop.__delete__(instance): # Delete the property
Nach dem Login kopieren

Beispiel

Lassen Sie uns eine Eigenschaft mit den Dekoratormethoden und Deskriptormethoden erstellen:

class PropertyDemonstrator:
    def __init__(self):
        self._private_data = 5

    def get_private(self): return self._private_data

    def set_private(self, value): self._private_data = value

    def delete_private(self): del self._private_data

    # Create a property using decorator methods
    private = property(get_private, set_private, delete_private, "My Private Data")

    # Create a property using descriptor methods
    another_private = Property(get_private, set_private, delete_private, "My Another Private Data")
Nach dem Login kopieren

In diesem Beispiel würden die Deskriptormethoden des Eigenschaftsobjekts die eigentliche Manipulation des _private_data-Attributs übernehmen und so eine konsistente und flexible Möglichkeit bieten darauf zugreifen, es ändern oder löschen.

Das obige ist der detaillierte Inhalt vonWie funktioniert der @property Decorator von Python, einschließlich seiner Getter-, Setter- und Deleter-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage