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

TypeError: Funcionario() takes no arguments

Meu código está como o do professor mas está com esse erro que não entendi, já vi e revi que estou na pasta certa quando peço para rodar o main.py Estou usando Ubuntu 20.04.4 LTS e Python 3.10.6 No repositório: https://github.com/bernaRocha/alura_Python/tree/master/06_python_tdd

7 respostas

Olá Bernardo! Você poderia mostrar o erro?

Acredito que o problema possa estar no import from bytebank import Funcionario, pois parece não se tratar de uma biblioteca que existe. Você parece estar declarando uma lista da forma errada em python.

Funcionario = []
Funcionario = ["Bernardo", '07/03/1988', 2000]
print(Funcionario)

Funcionario não é uma lista, é um objeto, no repositório consta o código do link, eu só não fiz em função e deu o erro:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    bernardo = Funcionario("Bernardo", '07/03/1988', 2000)
TypeError: Funcionario() takes no arguments

https://github.com/alura-cursos/2622-python-tdd/blob/aula_1/main.py

Ah sim! vi agora. Tente importar import from codigo.bytebank import Funcionario, ao invés de somente import from bytebank import Funcionario.

Seu código ficaria dessa forma:

from codigo.bytebank import Funcionario

bernardo = Funcionario("Bernardo", '07/03/1988', 2000)

print(bernardo)

Fiz dessa forma também, aí dá esse erro:

Traceback (most recent call last):
  File "main.py", line 16, in <module>
    bernardo = Funcionario("Bernardo", '07/03/1988', 2000)
TypeError: Funcionario() takes no arguments

Parece ser algum problema no modulo... Verifique se os dois arquivos estão iguais bytebank.py que o instrutor escreveu e o seu . Também verifique se você está com a versão mais atualizada do Python.

solução!

Olá a todos, bem com vocês?

O erro de tipo (TypeError) apresentado está informando que a classe Funcionario(), não recebe um argumento, pode está relacionado com a declaração do método inicializador da classe.

Analisando o código disponibilizado na primeira postagem, no método inicializador da classe Funcionario() foi feito a declaração do método inicializador escrito da seguinte forma: __int__ (com apenas um i), o correto seria __init__ (com dois is). O método inicializador deverá ficar como apresentado a seguir.

class Funcionario:
    def __init__(self, nome, data_nascimento, salario):
        self._nome = nome
        self._data_nascimento = data_nascimento
        self._salario = salario

Peço que verifiquem o proposto acima, caso permaneça o erro, fico à disposição.

Lembre-se que pode contar sempre com o fórum Alura, seja para tirar suas dúvidas ou para compartilhar o seus desenvolvimentos.

Abraços e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Nossa, vergonha do meu erro....obrigado. Agora deu certo aqui.