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.