Comment déclarez-vous une variable comme 'privée' dans une classe Python ?

L'utilisation de variables privées en Python

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 __.

Le double underscore en Python

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.

Les bonnes pratiques

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.

Trouvez-vous cela utile?