1
resposta

Atributo privado ( _nome ) pode ser alterado na instancia

Bom dia, Verificando a dúvida do JOHNATAN ALVES VIANA sobre a possibilidade de se alterar um atributo privado sem utilizar o método setter, posso concluir que isso seria uma falha de segurança no Python?

Desde já agradeço,

1 resposta

Olá! Tudo bem?

No Python, os atributos que começam com um único sublinhado, como _nome, são considerados "protegidos" e não "privados". Isso significa que eles são uma convenção para indicar que não devem ser acessados ou modificados diretamente fora da classe, mas não são completamente inacessíveis. Portanto, tecnicamente, é possível alterar esses atributos diretamente, como você observou, mas isso não é uma prática recomendada.

A ideia de usar um único sublinhado é mais uma convenção de código para desencorajar o acesso direto, mas não impede que alguém o faça. Se você realmente precisa proteger um atributo para que ele não seja modificado diretamente, você pode usar dois sublinhados, como __nome. Isso ativa o name mangling, que torna mais difícil acessar o atributo fora da classe, mas ainda assim não é impossível.

Em termos de segurança, isso não é uma falha do Python, mas sim uma característica da linguagem que prioriza a responsabilidade do programador em seguir as convenções de encapsulamento. Para garantir que os atributos sejam modificados de maneira controlada, é recomendável usar métodos getters e setters ou propriedades (property), que permitem encapsular a lógica de acesso e modificação dos atributos.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.