Lors de la définition d'une propriété en Python, la plupart des exemples ressemblent à ceci:
property1
class Prop1(object):
@property
def x(self):
'''x property'''
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
Cependant, seuls les getters peuvent être spécifiés avec ce décorateur de propriété, Même si vous attachez un décorateur de propriété à deleter comme indiqué ci-dessous, deleter n'est pas défini (Setter / getter est défini)
property2
class Prop2(object):
@property
def x(self):
del self._x
@x.setter
def x(self, value):
self._x = value
@x.getter
def x(self):
return self._x
Indépendamment du déléteur, il semble oublier lequel du setter et du getter devrait avoir le décorateur de la propriété. D'un autre côté, il est inconfortable d'acheter complètement au revoir avec le décorateur comme suit.
property3
class Prop3(object):
def getx(self):
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, 'x property')
Alors, que diriez-vous d'écrire que le décorateur de propriété n'est pas utilisé (utilisé comme une fonction) + le décorateur est utilisé pour spécifier getter / setter / deleter?
property4
class Prop4(object):
x = property(doc='x property')
@x.setter
def x(self, value):
self._x = value
@x.getter
def x(self):
return self._x
@x.deleter
def x(self):
del self._x
Cependant, on a l'impression de regarder le code source sur le net, et la manière d'écrire avec un décorateur immobilier sur un getter semble majoritaire ...
Recommended Posts