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

Deixando atributos privados

Atualmente uso o python 3.9 para acompanhar a aula e quando ponho o underscore os atributos não são mais reconhecidos, na nova versão existe outro método para privar atributos? Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Josué, tudo bem com você?

No Python 3.9 permanece sendo usado o underscore ( _ ) para definir um atributo como privado, quando vamos fazer uma referência a um atributo privado também será necessário fazermos o uso do underscore ( _ ).

No código apresentado na imagem enviada, note que foram feitas as definições dos atributos como privado, mas quando o atributo é utilizado para o cálculo do saldo ou para imprimir a mensagem, continua fazendo referência aos atributos antes de serem privados, sem o underscore ( _ ), para que o código funcione temos que adicionar os underscore ( _ ) nos pontos onde chamamos essas referências aos atributos. Deixo abaixo o código para comparação, o código já está com as mudanças.

class Conta:

    def __init__(self, numero, titular, saldo, limite):
        print("Construindo objeto ... {}".format(self))
        self.__numero = numero
        self.__titular = titular
        self.__saldo = saldo
        self.__limite = limite

    def extrato(self):
        print("Saldo de {} do titular {}". format(self.__saldo, self.__titular))

    def deposita(self, valor):
        self.__saldo += valor
        print("Seu novo saldo é {}".format(self.__saldo))

    def saca(self, valor):
        self.__saldo -= valor
        print("Seu novo saldo é {}".format(self.__saldo))

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

As modificações foram feitas nas linhas 11, 14, 15, 18 e 19.

Em caso de dúvidas, coloco-me à disposição.

Abraços e bons estudos.

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

Muito obrigado Felippe, funcionou aqui !!! Abraços e vlw