Sobes.tech
Junior — Middle

De que forma o Python consegue ocultar a implementação interna de um objeto e esconder dados do acesso externo?

sobes.tech IA

Resposta da IA

Em Python, a ocultação da implementação interna do objeto e dos dados é alcançada através de convenções e mecanismos de encapsulamento:

  • Um sublinhado (_var) — indica que o atributo ou método destina-se ao uso interno (protegido), mas tecnicamente acessível de fora.
  • Doble sublinhado (__var) — leva a name mangling (alteração do nome), dificultando o acesso ao atributo de fora, por exemplo, __var torna-se _ClassName__var. Isso serve para evitar sobrescritas acidentais e ocultar dados.

Exemplo:

class MyClass:
    def __init__(self):
        self.public = "acessível a todos"
        self._protected = "para uso interno"
        self.__private = "oculto do acesso externo"

obj = MyClass()
print(obj.public)          # acessível
print(obj._protected)      # acessível, mas não recomendado
print(obj._MyClass__private)  # acesso ao atributo "privado" via name mangling

Assim, em Python não há um acesso privado estrito, mas há convenções e mecanismos que permitem ocultar dados do acesso direto de fora.