Junior — Middle
Explique as diferenças na utilização de um e dois sublinhados nos nomes de variáveis e métodos em Python.
sobes.tech IA
Resposta da IA
Em Python, um sublinhado no início do nome de uma variável ou método (por exemplo, _var) é uma convenção que indica que esse nome é destinado ao uso interno (protegido) e não deve ser usado fora da classe ou módulo. É apenas uma recomendação, o interpretador não proíbe o acesso.
O duplo sublinhado no início do nome (por exemplo, __var) ativa o mecanismo name mangling — o nome da variável ou método é alterado pelo interpretador para dificultar o acesso externo à classe. Isso é usado para criar atributos privados, que são difíceis de sobrescrever ou usar acidentalmente em subclasses.
Exemplo:
class MyClass:
def __init__(self):
self._protected = 1 # convenção: atributo protegido
self.__private = 2 # name mangling
obj = MyClass()
print(obj._protected) # acesso possível, mas não recomendado
# print(obj.__private) # causará um erro AttributeError
print(obj._MyClass__private) # acesso ao atributo "privado" via name mangling
Assim, um sublinhado simples é uma convenção, e o duplo é um mecanismo de ocultação de nomes.