1
resposta

Ordem da declaração das variaveis na função do objeto

Ao estar implementando o código junto com a aula, na hora de rodar a primeira vez percebi que estava dando um erro no console:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "D:\DOWNLOADS 2.0\Alura\python\oo\adivinha\conta.py", line 21, in transfere
    self.saca(valor)
  File "D:\DOWNLOADS 2.0\Alura\python\oo\adivinha\conta.py", line 18, in saca
    self.__saldo -= valor
TypeError: unsupported operand type(s) for -=: 'float' and 'Conta'

nisso percebi que a ORDEM das variaveis VALOR e DESTINO, importavam na qual quando o codigo esta nessa ordem:

 def transfere(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor)

Funciona! Mas quando inverto somente o valor e destino ele imprime o erro a cima :/ Só queria saber se tinha uma explicação sobre isso ou meu PyCharm que ta bugado

1 resposta

Quando Você escreva sua função/método, você fica preso à ordem que foi determinada, ainda mais que na sua função/método a primeira variável VALOR é pensada como um número que vai alimentar o método SACA, de outra maneira, destino é um objeto que tem como método DEPOSITA.. Invertendo, o número vai tentar buscar esse método.