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?
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?
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.
Muito obrigado Felippe, funcionou aqui !!! Abraços e vlw