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,
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,
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!