L'utilisation des propriétés permet de protéger les attributs d'une classe en ayant toujours un regard sur leur contenu. Les propriétés apparaissent pour l'utilisateur de la classe comme de simples attributs de classe publics mais elles sont en fait des attributs privés uniquement accessibles par des accesseurs (que c'est original !).
Pour mieux comprendre nous allons utiliser une classe convertisseur (encore très original!). Cette classe dispose de deux propriétés : euros et francs. Nous souhaitons que la valeur stockée dans euros soit toujours cohérente avec celle de francs, et vis-versa. Pour ce faire nous allons utiliser les propriétés.
Comme je l'ai indiqué plus haut, les propriétés sont en fait un ensemble attributs privés/accesseurs. Il faut donc commencer par déclarer nos deux attributs privés puis les méthodes de classe qui vont gérer leurs valeurs. Ensuite la fonction property va nous permettre de créer la propriété correspondante :
Source / Exemple :
#!/usr/bin/env python
#-*- coding: utf-8 -*-
class convertisseur(object):
def __init__(self):
self.__taux = 6.55957
self.__euros = 0
self.__francs = 0
# accesseurs en lecture
def getEuros(self):
return self.__euros
def getFrancs(self):
return self.__francs
# accesseurs en écriture
def setEuros(self, euros):
self.__euros = euros
self.__francs = self.__euros*self.__taux
def setFrancs(self, francs):
self.__francs = francs
self.__euros = self.__francs/self.__taux
# declaration des propriétés
euros = property(getEuros, setEuros)
francs = property(getFrancs, setFrancs)
if __name__ == '__main__':
test = convertisseur()
test.francs = 10
print('%.2f francs -> %.2f euros' %(test.francs, test.euros))
test.euros = 25
print('%.2f francs -> %.2f euros' %(test.francs, test.euros))
Conclusion :
Ainsi maintenant je peux directement modifier la valeur euros et ma classe va automatiquement modifier francs pour me garantir la cohérence entre les 2 attributs de la classe.
On pourrait également créer une propriété pour le taux afin que l'utilisateur de la classe puisse le modifier. Il faudra bien évidement prendre soin de recalculer les valeurs d'euros et de francs dans l'accesseur setTaux.
http://www.flozix.com/wordpress/
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.