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

propertyDie 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.

Antworten auf die Frage(12)

Ihre Antwort auf die Frage