Como funciona o decorador @property?

Eu gostaria de entender como a função internaproperty trabalho. O que me confunde é queproperty também pode ser usado como decorador, mas só aceita argumentos quando usado como uma função interna e não quando usado como decorador.

Este exemplo é dodocumentação:

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

propertyOs argumentos degetx, setx, delx e uma string doc.

No código abaixoproperty é usado como decorador. O objetivo disso é ox função, mas no código acima não há lugar para uma função de objeto nos argumentos.

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

E como estão asx.setter ex.deleter decoradores criados? Estou confuso.

questionAnswers(12)

yourAnswerToTheQuestion