1
resposta

Alteração do atributo

Pq no metódo:

 saca(self, valor):
        self.__saldo -= valor

Alteramos diretamente o atributo self.__saldo, e quando utilizamos o método:

transfere(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor) 

chamamos o método saca() ao invés de alterar o atributo diretamente, já que ainda estamos dentro da classe Conta?

No meu código o método transfere ficou:

transfere(self, valor, destino):
        self.s__saldo -= valor
        destino.deposita(valor)
1 resposta

Olá Lucas.

A escolha feita pelo instrutor está ligado ao paradigma da programação orientação a objeto (POO), onde deixamos a responsabilidade separada, não misturamos varias logicas em uma mesmo método, se essas logicas não fazem parte da mesma responsabilidade.

Essa escolha está estritamente ligada aos conceitos, você pode conhecer mais afundo no artigo sobre POO.

Mas entendo que a solução que você propôs não está incorreta, mas vale uma reflexão, se em algum momento a logica de como retiramos dinheiro na conta mude, incluindo talvez uma taxa ou log, será necessário fazer essa alteração em dois lugares.

No método transfere:

transfere(self, valor, destino):
        self.s__saldo -= valor
        destino.deposita(valor)

e no método saca:

 saca(self, valor):
        self.__saldo -= valor

Nessa situação pode ser que não seja um problema, mas repito que a reflexão sobre, determinar responsabilidades para o seus métodos, é importante porque assim garantimos que o seu código será mais simples de entender e de fazer manutenções.

Espero ter ajudado a entender, mas qualquer duvida não hesite em perguntar.

Bons Estudos.