1
resposta

Duvida referente ao @property e setter

Meu código está assim

class Conta:
    def __init__(self, numero, titular, saldo, limite ):
        print(f"construindo ...{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 depositar(self, valor):
        self.__saldo += valor

    def sacar(self, valor):
        self.__saldo -= valor

    def transferir(self, valor, destino):
        self.sacar(valor)
        destino.depositar(valor)

    @property
    def saldo(self):
        return self.__saldo

    @property
    def titular(self):
        return self.__titular

    @property
    def limite(self):
        print("property-Limite")
        return self.__limite

    @limite.setter
    def limite(self, valor):
        print("setter")
        self.__limite = valor

Primeiro observei que os @setter precisam estar declarados após os @property e a outra situação é referente a mensagem que deixei no @property do limite,ou seja, mesmo não acionando essa propriedade a mensagem é exibida, alguém sabe me explicar o porque isso ocorre?

Resultado

(python console)

from conta import Conta
conta = Conta(123,"Nico",55.5,1000.0)
construindo ...<conta.Conta object at 0x00000132C741E0B0>
property-Limite
conta.saldo
55.5
property-Limite
conta.titular
'Nico'

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObrigado

1 resposta

Olá Leandro, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Fazendo um teste com o seu código, a mensagem property-Limite foi informada apenas quando foi feito o uso do método limite, conforme apresentado a abaixo:

# Terminal 

conta = Conta(123, "Nico", 55.5, 1000.0)
construindo ...<ola.Conta object at 0x000001901B3A0A30>
conta.saldo
55.5
conta.titular
'Nico'
conta.limite
property-Limite
1000.0

Imagem do console Python da IDE Pycharm, o fundo da tela é cinza, nessa imagem temos o código que é apresentado anterior a essa imagem

Recomendo que finalize o terminal clicando em Stop Console e rode novamente clicando em Rerun os botões estão na lateral esquerda do console Python, faça o teste novamente para verificar se o erro persiste.

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!