Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não entendi a função do encapsulamento

Na aula, em um determinado momento é dito que:

"Continuamos com o mesmo problema, porque qualquer um pode botar as mãos no atributo curtidas."

Mas quando usamos o '__curtidas' o atributo continua acessível pelo '_Perfil__curtidas'. Ou seja, continuo podendo muda-lo.

>>> p.curtir()
>>> p.curtir()
>>> p.obter_curtidas()
2
>>> p.curtir()
>>> p.obter_curtidas()
3
>>> p._Perfil__curtidas
3
>>> p._Perfil__curtidas = 100
>>> p._Perfil__curtidas
100
>>> p.obter_curtidas()
100

Então, qual o sentido em usar este artifício ?

2 respostas
solução!

Fala aí, Vitor! Tudo certo, cara? =)

A ideia de se utilizar "atributos privados", ou seja, com o prefixo _, é impossibilitar sua utilização no mundo externo àquela classe... Em Python, não é bem assim que funciona, ou seja, não conseguimos impossibilitar sua utilização, mas conseguimos dificultar. A linguagem faz essa modificação, para deixar menos intuitiva o seu uso, ou seja, é muito menos comum lembrar de fazer _Perfil__curtidas do que _curtidas, sacou? =D

Ainda é possível acessar esse atributo? Sim, mas não de forma direta e fácil como era antes... A ideia é essa. =)

Conseguiu entender? Espero que tenha conseguido ajudá-lo, mas qualquer dúvida não deixe de postar por aqui, no fórum, para que possamos continuar ajudando-o, belezinha? =D

Abraço e bons estudos,

Fábio

Oi Fábio,

Entendi sim. Então esse recurso serve para desencorajar o próprio desenvolvedor a tentar acessar aquele atributo de forma dinâmica.

É que do jeito que o texto tava escrito, eu achei que isso serviria como um recurso de segurança contra invasores.

Obrigado!