Formation 90 min de lecture Programmation orientΓ©e objet

πŸ“¦ Encapsulation et propriΓ©tΓ©s

Python & Data Science Chapitre : Programmation orientΓ©e objet Sous-chapitre : Encapsulation et propriΓ©tΓ©s

Objectifs d'apprentissage

🎯 Objectifs :\n
1Comprendre l'encapsulation\n2. Utiliser des attributs privΓ©s\n3. CrΓ©er des propriΓ©tΓ©s (@property)\n4. Utiliser les setters et getters

Introduction

πŸ“– L'encapsulation protΓ¨ge les donnΓ©es en les rendant privΓ©es.

Contenu thΓ©orique

Encapsulation :\n
PYTHON
\nclass CompteBancaire:\n    def __init__(self):\n        self._solde = 0  # Attribut protΓ©gΓ©\n        self.__secret = 123  # Attribut privΓ©\n    \n    @property\n    def solde(self):\n        return self._solde\n    \n    @solde.setter\n    def solde(self, valeur):\n        if valeur >= 0:\n            self._solde = valeur\n

Exemples pratiques

πŸ’» Exemple : Compte bancaire encapsulΓ©\n
PYTHON
\nclass CompteBancaire:\n    def __init__(self, titulaire):\n        self.titulaire = titulaire\n        self.__solde = 0\n    \n    def deposer(self, montant):\n        if montant > 0:\n            self.__solde += montant\n            return True\n        return False\n    \n    def retirer(self, montant):\n        if 0 < montant <= self.__solde:\n            self.__solde -= montant\n            return True\n        return False\n    \n    @property\n    def solde(self):\n        return self.__solde\n\ncompte = CompteBancaire("Jean")\ncompte.deposer(1000)\nprint(compte.solde)  # 1000\n# compte.__solde  # Erreur ! Attribut privΓ©\n

Bonnes pratiques

1Utiliser _ pour attribut protΓ©gΓ©\nβœ… 2. Utiliser __ pour attribut privΓ©\nβœ… 3. Utiliser @property pour getter\nβœ… 4. Utiliser @setter pour validation

Pièges à éviter

AccΓ©der directement aux attributs privΓ©s\n
Utiliser les propriΓ©tΓ©s et mΓ©thodes publiques

RΓ©sumΓ©

Encapsulation : donnΓ©es privΓ©es\nβœ… @property : getter\nβœ… @setter : validation\nβœ… __ : nom mangling (privΓ© strict)

Ressources supplΓ©mentaires

πŸ“š docs.python.org/3/tutorial/classes.html#private-variables