Filipe, fiz uns testes aqui e parece que o problema está resolvido (pelo menos na 3.10.2 que estou usando). Montei um código para testar e o acesso ao __limite
simplesmente sumiu. Acredito que ao usar o @property ele esconde aquela informação com __
, gerando mais segurança no acesso aos atributos. O código é esse:
class Conta:
def __init__(self, numero, titular, saldo, limite):
self.__numero = numero
self.__titular = titular
self.__saldo = saldo
self.__limite = limite
@property
def limite(self):
return(self.__limite)
@limite.setter
def limite(self, valor):
self.__limite = valor
@property
def saldo(self):
return(self.__saldo)
def deposita(self, valor):
self.__saldo += valor
def saca(self, valor):
self.__saldo -= valor
def extrato(self):
return (self.__saldo)
def transfere(self, valor, conta):
self.__saldo -= valor
conta.deposita(valor)
conta = Conta(123,"Marco",1000,5000)
conta.limite = 2500
print(conta.limite)
print(conta.__limite)
Dá erro no último comando: