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
Barbara StreisandOriginal
2024-12-17 20:51:11469Durchsuche

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)

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

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

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")

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!

Stellungnahme:
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