Sobes.tech
Middle+

Como é implementada a encapsulação em Python? Fale-me sobre os modificadores de acesso.

sobes.tech IA

Resposta da IA

Em Python, a encapsulação é implementada através de convenções de nomenclatura e propriedades de classes, pois não existem modificadores de acesso estritos como em outras linguagens (private, protected, public).

  • Atributos e métodos públicos — nomes sem sublinhados, acessíveis em qualquer lugar.
  • Protegidos (protected) — nomes com um sublinhado _var. É uma convenção que indica que o atributo ou método destina-se ao uso interno, mas tecnicamente acessível de fora.
  • Privados (private) — nomes com dois sublinhados __var. Python aplica um mangling de nomes, alterando o nome do atributo dentro da classe para dificultar o acesso externo.

Exemplo:

class MyClass:
    def __init__(self):
        self.public = "acessível a todos"
        self._protected = "recomendado não usar fora da classe e herdeiros"
        self.__private = "oculto do acesso direto"

obj = MyClass()
print(obj.public)        # funciona
print(obj._protected)    # funciona, mas não recomendado
# print(obj.__private)   # causará um erro
print(obj._MyClass__private)  # acesso via mangling de nomes

Portanto, a encapsulação em Python é mais um acordo e um mecanismo de mangling, e não modificadores de acesso estritos.