Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

setter no python 3 spyder

Quando vou definir um setter, o terminal reclama que limite não está definido. Porém escrevi o código idêntico ao do instrutor(mas uso spyder, ao contrário do pycharm do instrutor), alguém sabe o que está acontecendo?

class Conta:

    def __init__(self, numero, titular, saldo, limite = 1000.0):
        print('contruindo 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

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

    def transfere(self, valor, recipiente):
        self.__saldo -= valor
        recipiente.__saldo += valor

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

    @limite.setter
    def limite(self, limite):
        self.__limite = limite    
2 respostas

Oi Matheus! Como vai?

O problema ai não é o Spyder. Se rodar o seu código no Pycharm também dará erro. Está faltando um trecho no seu código para que funcione:

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

    @property
    def limite(self):
        return self.__limite

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

O property do meio cria a referência a limite que está faltando.

Se precisar que eu explique em mais detalhes, por favor me avise =)

Muito obrigado, entendi agora