Sobes.tech
Junior — Middle

Expliquez les différences dans l'utilisation d'un et de deux underscores dans les noms de variables et de méthodes en Python.

sobes.tech IA

Réponse de l'IA

En Python, un underscore au début du nom d'une variable ou méthode (par exemple, _var) est une convention indiquant que ce nom est destiné à un usage interne (protégé) et ne doit pas être utilisé en dehors de la classe ou du module. C'est simplement une recommandation, l'interpréteur n'interdit pas l'accès.

Un double underscore au début du nom (par exemple, __var) active le mécanisme name mangling — le nom de la variable ou méthode est modifié par l'interpréteur pour rendre l'accès depuis l'extérieur de la classe plus difficile. Cela est utilisé pour créer des attributs privés, difficiles à redéfinir ou à utiliser accidentellement dans des sous-classes.

Exemple:

class MyClass:
    def __init__(self):
        self._protected = 1  # convention : attribut protégé
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # accès possible, mais non recommandé
# print(obj.__private)   # provoquera une erreur AttributeError
print(obj._MyClass__private)  # accès à l'attribut "privé" via name mangling

Ainsi, un underscore simple est une convention, un double mécanisme de dissimulation de nom.