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.