Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

atributo privado

No trecho do código:

def extrai_saldo(conta):
    return conta._saldo

Foi acessado um atributo privado, ainda não entendi muito bem o conceito deles.

Quando escrevi o código, ao colocar o ponto (conta.) o pycharme já me trouxe a recomendação para completar com _saldo.

Alguém conseguiria me explicar melhor o conceito e uso dos atributos privados?

Desde já, muito grata.

1 resposta
solução!

Olá, Stephanie. Pois é em Python não existe atributo verdadeiramente privado, mesmo se você usar o duplo underline ainda sim conseguiria acessar o valor ou alterar o atributo.

Por exemplo:

class Conta:
    def __init__(self, nome, saldo):
        self.nome = nome
        self.__saldo = saldo
    @property
    def saldo(self):
        return self.__saldo

def main():
    minha_conta = Conta("Guido Van Rossum", 500)

    print(f"Acesso do atributo \"privado\" pelo metodo get -> {minha_conta.saldo}")
    print(f"Acesso do atributo \"privado\" diretamente -> {minha_conta._Conta__saldo}")

if __name__ == "__main__":
    main()

Vai ter como saída: Acesso do atributo "privado" pelo metodo get -> 500 e Acesso do atributo "privado" diretamente -> 500

inclusive vc pode alterá-lo! O uso do __ e do _ é basicamente pra indicar que aquele atributo é privado e não deve ser manipulado diretamente.