Python property()-Funktion

Python 内置函数Python Built-in-Funktionen


Beschreibung

property()Die Funktion wird verwendet, um Attributwerte in New-Style-Klassen zurückzugeben.

Syntax

Das Folgende ist die Syntax der property()-Methode:

class property([fget[, fset[, fdel[, doc]]]])

Parameters

  • fget -- Funktion zum Abrufen des Attributwerts
  • fset -- Funktion zum Festlegen des Attributwerts
  • fdel -- Funktion zum Löschen des Attributwerts
  • doc -- Beschreibungsinformationen zum Attribut

Rückgabewert

Gibt Attribute von New-Style-Klassen zurück.

Beispiele

Definieren Sie einen steuerbaren Attributwert x

class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "Ich bin die Eigenschaft 'x'.")

WenncJaCWenn c eine Instanz von C ist, löst c.x den Getter aus, c.x = value löst den Setter aus, und del c.x löst den Deleter aus.

Wenn der Parameter doc angegeben ist, wird er zum Docstring dieses Attributwerts; andernfalls kopiert die property-Funktion den Docstring der fget-Funktion (falls vorhanden).

Die Verwendung der property-Funktion als Dekorator macht das Erstellen schreibgeschützter Properties bequem:

class Parrot(object): def __init__(self): self._voltage = 100000 @property def voltage(self): """Ruft die aktuelle Spannung ab.""" return self._voltage

Der obige Code wandelt die Methode voltage() in eine Getter-Methode für eine schreibgeschützte Eigenschaft mit demselben Namen um.

Die Getter-, Setter- und Deleter-Methoden von property können auch als Dekoratoren verwendet werden:

class C(object): def __init__(self): self._x = None @property def x(self): """Ich bin die 'x'-Eigenschaft.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x

Dieser Code ist genau derselbe wie im ersten Beispiel, aber beachten Sie, dass die Namen dieser zusätzlichen Funktionen dieselben sind wie die unter property, wie z. B. x hier.

Python 内置函数Python Built-in-Funktionen

Andere Erweiterungen