Ceci est une ancienne révision du document !
Avec les classes “nouveau style”, utiliser “property” est intéressant parce que ça permet en même temps:
Parmi les différents codes possibles, j'en ai retenu 2:
Version avec décorateur:
def Property(func): return property(**func()) class Maclasse(object): def __init__(self, x): self._x = x @Property def x(): doc = "docstring de x" def fget(self): return self._x def fset(self, x): self._x = x def fdel(self): del self._x return locals()
Version sans décorateur:
class Maclasse(object): def __init__(self, x): self._x = x def x(): doc = "docstring de x" def fget(self): return self._x def fset(self, x): self._x = x def fdel(self): del self._x return locals() x = property(**x())
Pour bien comprendre comment ça marche, on va créer une classe Test avec un attribut x qui sera manipulé par property. on va ajouter des 'print' pour signaler l'appel aux fonctions qui vont agir sur x. Et on va retirer la méthode de destruction de l'attribut:
class Test(object): def __init__(self, x): self._x = x def x(): doc = "docstring de x" def fget(self): print "appel à fget" return self._x def fset(self, x): print "appel à fset" self._x = x return locals() x = property(**x())
Essayons maintenant des appels:
Amusez-vous bien!