Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Há dependencia do @limite.setter com o @property?

Após finalizar a aula sobre como suprimir os get_ e os set_ do nosso script, testei algumas formas de fazer o objeto e me deparei com um erro quando implementei:

class ContaCorrente: 
  def __init__(self, registro, titular, saldo, limite): #funcao construtora
    self.__registro = registro # modificador de visibilidade
    self.__titular = titular
    self.__saldo = saldo
    self.__limite = limite
    print('A conta de {} foi construída com sucesso.'.format(titular))

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

sem o acréscimo do,

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

que nas aulas estava enter o def int e o @limite.setter. Ao fazer isso eu recebi uma mensagem de erro que me fez pensar que o @limite.setter criado para o limite, poderia ter alguma dependência do @property criado anteriormente.

Alguém saberia me dizer o porquê que o erro acontece, visto que o setter ao me ver, modifica os dados que são definidos junto ao registro da conta?

1 resposta
solução!

João,

Conversando com um amigo sobre o seu problema! Não tem relação com o que o setter faz, o problema é que vc tá referenciando a property limite antes de declarar ela. Vc só pode usar @limite.setter depois de ter criado o atributo limite dentro do corpo da classe, e esse atributo só é criado quando vc usa o @property no método limite

Isso aqui:

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

É basicamente a mesma coisa que isso:

class ContaCorrente:
    def _limite(self):
        return self.__limite

    limite = property(_limite)

E nesse segundo caso vc pode ver que tem um ponto onde o atributo limite é criado. Se vc precisa referenciar ele, tem que ser depois dele ser criado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software