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,
__vartorna-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.