Python-Eigenschaft ()

Das Konstrukt property () gibt das Eigenschaftsattribut zurück.

Die Syntax von property()lautet:

 Eigenschaft (fget = Keine, fset = Keine, fdel = Keine, doc = Keine)

Empfohlene Lektüre: Python @property: Wie wird es verwendet und warum?

property () Parameter

Es werden property()vier optionale Parameter benötigt:

  • fget (optional) - Funktion zum Abrufen des Attributwerts. Der Standardwert ist None.
  • fset (optional) - Funktion zum Einstellen des Attributwerts. Der Standardwert ist None.
  • fdel (optional) - Funktion zum Löschen des Attributwerts. Der Standardwert ist None.
  • doc (optional) - Eine Zeichenfolge, die die Dokumentation (docstring) für das Attribut enthält. Der Standardwert ist None.

Rückgabewert von property ()

property() Gibt das Eigenschaftsattribut vom angegebenen Getter, Setter und Deleter zurück.

  • Wenn keine Argumente angegeben werden, wird property()ein Basiseigenschaftsattribut zurückgegeben, das keinen Getter, Setter oder Deleter enthält.
  • Wenn doc nicht bereitgestellt wird, property()wird die Dokumentzeichenfolge der Getter-Funktion verwendet.

Beispiel 1: Erstellen Sie ein Attribut mit Getter, Setter und Deleter

 class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name

Ausgabe

 Name abrufen Der Name lautet: Adam Name auf John setzen Name löschen 

Hier wird _name als private Variable zum Speichern des Namens der Person verwendet.

Wir setzen auch:

  • eine Getter-Methode get_name(), um den Namen der Person zu erhalten,
  • eine Setter-Methode set_name()zum Festlegen des Namens der Person,
  • Eine Löschmethode del_name()zum Löschen des Namens der Person.

Jetzt legen wir einen neuen Eigenschaftsattributnamen fest, indem wir die property()Methode aufrufen .

Wie im Programm gezeigt, werden p.nameinterne Aufrufe get_name()als Getter, set_name()Setter und del_name()Deleter durch die in den Methoden vorhandene Druckausgabe aufgerufen.

Beispiel 2: Verwenden von @property decorator

Anstatt zu verwenden property(), können Sie den Python-Dekorator verwenden @property, um den Getter, Setter und Deleter zuzuweisen.

 class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name

Ausgabe

 Name abrufen Der Name lautet: Adam Name auf John setzen Name löschen 

Anstatt zu verwenden property(), haben wir hier den @propertyDekorateur verwendet.

Zunächst geben wir an, dass die name()Methode auch ein Attribut von Person ist. Dies erfolgt @propertyvor der Getter-Methode, wie im Programm gezeigt.

Als nächstes verwenden wir den Attributnamen, um den Setter und den Deleter anzugeben.

Dies erfolgt mit @name.setterder Setter-Methode und @name.deleterder Deleter-Methode.

Beachten Sie, dass wir dieselbe Methode name()mit unterschiedlichen Definitionen zum Definieren von Getter, Setter und Deleter verwendet haben.

Wenn wir jetzt verwenden p.name, ruft es intern den entsprechenden Getter, Setter und Deleter auf, wie aus der gedruckten Ausgabe in der Methode hervorgeht.

Interessante Beiträge...