Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não imprime ContaSalario

Não consigo imprimir corretamente. aparece erro e não consigo identificar

class ContaSalario:

def init(self, codigo): self.codigo = codigo self.saldo = 0

def deposita(self, valor): self._saldo += valor

def str(self): return "[>>codigo {} Saldo {}<<]".format(self.codigo, self.saldo)


Ao imprimir aparece a mensagem que a ContaSalario não é definida


conta1 = ContaSalario(37)
print(conta1)

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-19-472f2be9b191> in <module>
----> 1 conta1 = ContaSalario(37)
      2 print(conta1)

NameError: name 'ContaSalario' is not defined

`

2 respostas
solução!

Já resolvi. Refiz tudo.

Oi Ricardo, primeiro vamos verificar a indentação, essa é a forma com que o código deve estar escrito:

class ContaSalario:

    def init(self, codigo):
        self.codigo = codigo
        self.saldo = 0

    def deposita(self, valor):
        self._saldo += valor

    def str(self):
        return "[>>codigo {} Saldo {}<<]".format(self.codigo, self.saldo)

conta1 = ContaSalario(37)
print(conta1)

Depois vamos às correções:

O método construtor, init deve vir acompanhado por quatro caracteres underline, dois na frente e dois atrás:

    def __init__(self, codigo):
        self.codigo = codigo
        self.saldo = 0

Também vamos adicionar o saldo aos argumentos do construtor:

    def __init__(self, codigo, saldo):
        self.codigo = codigo
        self.saldo = 0

Seguindo apenas esses passos, o erro já deve ser solucionado, mas nada será impresso, para isso você deve acrescentar o método str() dentro da função print, na última linha:

print(conta1.str())

Removendo o underline do método deposita(), o código final deverá ficar assim:

class ContaSalario:

    def __init__(self, codigo):
        self.codigo = codigo
        self.saldo = 0

    def deposita(self, valor):
        self._saldo += valor

    def str(self):
        return "[>>codigo {} Saldo {}<<]".format(self.codigo, self.saldo)

conta1 = ContaSalario(37)
print(conta1.str())

Eu também estou aprendendo, então se alguém tiver uma solução melhor ou encontrar algum erro no que eu descrevi, sinta-se a vontade para ajudar