Sobes.tech
Junior — Middle

Explique las diferencias en el uso de un guion bajo y doble guion bajo en los nombres de variables y métodos en Python.

sobes.tech AI

Respuesta de la IA

En Python, un guion bajo al principio del nombre de una variable o método (por ejemplo, _var) es una convención que indica que ese nombre está destinado para uso interno (protegido) y no debe usarse fuera de la clase o módulo. Es solo una recomendación, el intérprete no prohíbe el acceso.

El doble guion bajo al principio del nombre (por ejemplo, __var) activa el mecanismo name mangling — el nombre de la variable o método es modificado por el intérprete para dificultar el acceso desde fuera de la clase. Esto se usa para crear atributos privados, que son difíciles de sobreescribir o usar accidentalmente en subclases.

Ejemplo:

class MyClass:
    def __init__(self):
        self._protected = 1  # convención: atributo protegido
        self.__private = 2   # name mangling

obj = MyClass()
print(obj._protected)    # se puede acceder, pero no se recomienda
# print(obj.__private)   # generará un error AttributeError
print(obj._MyClass__private)  # acceso al atributo "privado" mediante name mangling

Por lo tanto, un guion bajo simple es una convención, y doble es un mecanismo de ocultación de nombres.