Programmation Orientée Objet en Python
  • Back to Main Website
  • Home
  • Introduction: Histoire et Concepts
    • Introduction: Histoire et Concepts
    • Histoire de la programmation
    • Première Structuration des données
    • Naissance de la POO
    • Python: tout n’est qu’objet
    • Python : Simplicité des objets et performance sous-jacente
    • Classes en Python : Concepts fondamentaux

    • Travaux Pratiques
    • Construire sa propre Liste
    • Construire son propre DataFrame
  • Encapsulation, Héritage, Composition et Dunder
    • Encapsulation, Heritage, Composition et Dunder
    • Encapsulation en Python
    • Héritage en Python : Concept et intérêt
    • Héritage vs Composition
    • Méthodes Dunder en Python
    • Python call Method: A Fun Exploration

    • Travaux Pratiques
    • TP: Heritage avec le pricing d’option
    • TP : Ajouter des méthodes dunder à DataFrameSimple
    • TP : Étendre la classe Liste avec des méthodes dunder
    • TP: Dunder Method with Tensor for Automatic Differentiation
  • Polymorphisme et Surcharge
    • Polymorphisme et Surcharge
    • Polymorphism in Object-Oriented Programming
    • Polymorphism in Python: Function Overloading and Type Checking
    • Class Creation: Standard vs type()
    • Type Hinting, Typing Module, and Linters in Python
    • Abstract Classes
    • Protocol Classes

    • Travaux Pratiques
    • TP
  • Decorators
    • Design Patterns
    • The decorator pattern
    • Decorator Practically
    • Built-in Decorators and Standard Library Decorators in Python
    • Practical Decorators in Python Libraries

    • Travaux Pratiques
    • TP: Monte Carlo Option Pricing with Decorators
    • TP: Optimizing Heston Model Monte Carlo Simulation
  • Project Management and Packaging
    • Project and Package
    • Organizing Python Projects
    • Understanding imports
    • Python Package Management and Virtual Environments
    • Unit Testing in Python

    • Travaux Pratiques
    • TP: Creating a Linear Regression Package
  • Design Patterns
    • OOP Design Patterns
    • Python-Specific Design Patterns
    • Creation Design Patterns
    • Structural Design Patterns
    • Behavioral Design Pattern

    • Travaux Pratiques
    • TP
  • Sujets de Projets possibles
    • Projets
    • Projets POO - 2024-2025
  • Code source
  1. Encapsulation en Python
  • Encapsulation, Heritage, Composition et Dunder
  • Encapsulation en Python
  • Héritage en Python : Concept et intérêt
  • Héritage vs Composition
  • Méthodes Dunder en Python
  • Python call Method: A Fun Exploration
  • Travaux Pratiques
    • TP: Heritage avec le pricing d’option
    • TP : Ajouter des méthodes dunder à DataFrameSimple
    • TP : Étendre la classe Liste avec des méthodes dunder
    • TP: Dunder Method with Tensor for Automatic Differentiation

On this page

  • Encapsulation en Python
    • Notion de public et privé en Python
    • Exemple d’encapsulation en Python
    • Points importants à retenir :
    • Avantages de l’encapsulation :

Encapsulation en Python

Cours
Fondamentaux
Comprendre l’encapsulation en Python et les conventions pour définir des attributs et méthodes publics et privés.
Author

Remi Genet

Published

2024-10-21

Encapsulation en Python


L’encapsulation est l’un des principes fondamentaux de la programmation orientée objet. Elle consiste à regrouper les données et les méthodes qui les manipulent au sein d’une même unité (la classe) et à contrôler l’accès à ces données depuis l’extérieur de la classe.

Notion de public et privé en Python

Contrairement à certains langages comme Java ou C++, Python n’a pas de mécanisme strict pour définir des attributs ou des méthodes comme “privés” ou “publics”. Cependant, Python suit une convention basée sur le nommage pour indiquer l’intention du développeur quant à l’utilisation des attributs et méthodes.

  1. Attributs et méthodes publics :
    • Nommés normalement, sans underscore.
    • Exemple : self.attribut, def methode(self):
    • Considérés comme faisant partie de l’interface publique de la classe.
  2. Attributs et méthodes “privés” (convention) :
    • Préfixés par un simple underscore _.
    • Exemple : self._attribut, def _methode(self):
    • Indique que ces éléments sont destinés à un usage interne et ne devraient pas être accédés directement depuis l’extérieur de la classe.
    • Cette convention est basée sur la confiance : techniquement, ces éléments restent accessibles.
  3. Attributs et méthodes “name mangling” :
    • Préfixés par un double underscore __ (sans underscore à la fin).
    • Exemple : self.__attribut, def __methode(self):
    • Python applique le “name mangling” : le nom est modifié en interne pour inclure le nom de la classe.
    • Rend l’accès depuis l’extérieur plus difficile, mais pas impossible.

Exemple d’encapsulation en Python

Points importants à retenir :

  1. L’encapsulation en Python est basée sur des conventions plutôt que sur des restrictions strictes.
  2. Les attributs et méthodes préfixés par un underscore _ sont considérés comme internes à la classe.
  3. Le double underscore __ déclenche le name mangling, rendant l’accès externe plus difficile mais pas impossible.
  4. L’encapsulation est une question de conception et de discipline de programmation en Python.
  5. Utilisez des méthodes publiques (getters/setters) pour contrôler l’accès aux données internes si nécessaire.

Avantages de l’encapsulation :

  • Contrôle de l’accès aux données
  • Flexibilité pour modifier l’implémentation interne sans affecter le code qui utilise la classe
  • Prévention des modifications accidentelles des données internes
  • Clarté du code en distinguant l’interface publique des détails d’implémentation
Back to top
Encapsulation, Heritage, Composition et Dunder
Héritage en Python : Concept et intérêt

Programmation Orienté Object en Python, Rémi Genet.
Licence
Code source disponible sur Github

 

Site construit avec et Quarto
Inspiration pour la mise en forme du site ici
Code source disponible sur GitHub