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

Mensagem de erro no terminal ao criar objeto

Esse é o codigo:

class Conta:

    def __init__(self, numero, titular, saldo , limite):
        print("construindo objeto...{}".format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

Essa mensagem aparece no terminal:

>>> from conta import Conta
>>> conta = Conta(123, "Nico", 55.0, 1000.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes 4 positional arguments but 5 were given

não entendi aonde está o erro

3 respostas

Agora o codigo, deu certo, não entendi nada

>>> from conta import Conta
>>> Conta() 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() missing 4 required positional arguments: 'numero', 'titular', 'saldo', and 'limite'
>>> conta = Conta(123, "nico", 55.0, 1000.0)
construindo objeto...<conta.Conta object at 0x0000026E6DCC8C88>
>>> conta2 = Conta(321, "marco", 100.0, 1000.0)
construindo objeto...<conta.Conta object at 0x0000026E6DCC8F08>
>>>

P.S. Estou usando o terminal do VS Code

solução!

Olá Anderson.

Imagino que o que aconteceu foi, você fez um alteração no script conta.py depois de já ter feito o import, e mesmo fazendo o import novamente a classe não será atualizada, sendo necessário reiniciar o interpretador (rodar o comando exit() e iniciar novamente com o comando python) e assim o seu import vai funcionar como esperado.

Esse comportamento pode ser analisado na documentação oficial do Python.

Por exemplo, sua classe Conta estava assim:

class Conta:

    def __init__(self, numero, titular, saldo):
        print("construindo objeto...{}".format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo

E você fez o import e notou que esqueceu um argumento do construtor.

PS C:\Users\igor_\Desktop> python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from conta import Conta
>>> conta = Conta(123, "Nico", 55.0, 1000.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes 4 positional arguments but 5 were given
>>>

Mesmo quando você corrigir a classe.

class Conta:

    def __init__(self, numero, titular, saldo , limite):
        print("construindo objeto...{}".format(self))
        self.numero = numero
        self.titular = titular
        self.saldo = saldo
        self.limite = limite

E importar novamente, sua classe não será atualizada e apresentara o mesmo comportamento.

PS C:\Users\igor_\Desktop> python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from conta import Conta
>>> conta = Conta(123, "Nico", 55.0, 1000.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes 4 positional arguments but 5 were given
>>> from conta import Conta
>>> conta = Conta(123, "Nico", 55.0, 1000.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __init__() takes 4 positional arguments but 5 were given
>>>

Sendo necessário reiniciar o python para resolver.

>>> exit()
PS C:\Users\igor_\Desktop> python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 22:45:29) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from conta import Conta
>>> conta2 = Conta(321, "marco", 100.0, 1000.0)
construindo objeto...<conta.Conta object at 0x031FAF70>
>>>

A lição que fica é que quando perceber um comportamento inesperado no seu código, uma saída para resolver, pode ser seja reiniciar o interpretador.

Espero ter ajudado, bons estudos.

Obrigado pela ajuda

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