Dans le monde de la programmation orientée objet, il est assez courant d'encapsuler certaines propriétés dans une classe afin de les rendre "privées", c'est-à-dire inaccessibles directement depuis l'extérieur de la classe. En Python, ceci est réalisé en préfixant le nom de la variable avec un double underscore __
.
En Python, déclarer une variable comme privée dans une classe se fait en préfixant le nom de la variable avec un double underscore. Par exemple:
class MaClasse:
__ma_variable_privee = "Je suis privée!"
Dans le cas ci-dessus, __ma_variable_privee
n'est pas directement accessible en dehors de la classe MaClasse
. Tenter de l'accéder en dehors de la classe entraînera une erreur.
Il est à noter que Python n'a pas de véritable notion de variable "privée" comme peut l'avoir par exemple Java. Le préfixe double underscore est plus une convention qu'une restriction réelle : il indique à l'utilisateur de la classe que cette variable n'est pas destinée à être accédée directement.
Il est généralement recommandé, lorsque l'on souhaite rendre une variable privée, de fournir des méthodes publiques (souvent appelées "getters" et "setters") pour interagir avec elle. Cela permet de contrôler la façon dont la variable est utilisée, en garantissant par exemple que seules certaines valeurs sont autorisées.
class MaClasse:
__ma_variable_privee = "Je suis privée!"
def get_variable(self):
return self.__ma_variable_privee
def set_variable(self, nouvelle_valeur):
self.__ma_variable_privee = nouvelle_valeur
Dans l'exemple ci-dessus, bien que __ma_variable_privee
ne soit pas directement accessible, sa valeur peut tout de même être obtenue ou modifiée via les méthodes get_variable
et set_variable
.