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