Sobes.tech
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.