Sobes.tech
Junior — Middle

¿Cuál es la diferencia entre un guion bajo y dos guiones bajos en los nombres de variables o métodos?

sobes.tech AI

Respuesta de la IA

En Python, el guion bajo al principio del nombre (por ejemplo, _variable) se usa como una convención que indica que la variable o método son internos (protegidos) y no están destinados a usarse fuera de la clase o módulo. Esto no impide el acceso, pero advierte a otros desarrolladores sobre su uso interno.

El doble guion bajo al principio del nombre (por ejemplo, __variable) activa el mecanismo de name mangling — cambio del nombre de la variable para evitar conflictos en las subclases. Python cambia el nombre de la variable añadiendo el nombre de la clase, dificultando el acceso directo desde fuera.

Ejemplo:

class MyClass:
    def __init__(self):
        self._protected = 1       # uso interno
        self.__private = 2        # el nombre cambiará a _MyClass__private

obj = MyClass()
print(obj._protected)          # acceso posible
# print(obj.__private)         # generará un error AttributeError
print(obj._MyClass__private)   # acceso mediante name mangling posible