Wie funktioniert der @ property decorator?
Ich würde gerne verstehen, wie die eingebauten funktionierenproperty
funktioniert. Was mich verwirrt, ist dasproperty
kann auch als Dekorator verwendet werden, akzeptiert jedoch nur Argumente, wenn sie als integrierte Funktion verwendet werden, und nicht, wenn sie als Dekorator verwendet werden.
Dieses Beispiel stammt aus demDokumentation:
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, "I'm the 'x' property.")
property
Die Argumente sindgetx
, setx
, delx
und eine Doc-Zeichenfolge.
Im Code untenproperty
wird als Dekorateur verwendet. Das Objekt davon ist dasx
Funktion, aber im obigen Code ist in den Argumenten kein Platz für eine Objektfunktion.
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
Und wie geht es denx.setter
undx.deleter
Dekorateure erstellt? Ich bin verwirrt.