2
respostas

[Dúvida] TypeError: Data() takes no arguments - Python OO

Estou resolvendo o desafio extra de formatar uma data. Meu código é o seguinte:

class Data:
    def __int__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formatada(self):
        print("{}/{}/{}".format(self.dia, self.mes, self.ano)

Mas quando executo no console do Python, o objeto Data parece que não aceita argumentos e retorna o seguinte erro:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Encontrei meu erro!!! eu declarei a def errada! ao invés de declarar def init(self), eu declarei def int(self)! faltou a letra i!

Obrigado

Olá! Fico feliz que você tenha conseguido identificar o erro no seu código. De fato, o erro TypeError: Data() takes no arguments ocorreu porque você escreveu a palavra int em vez de init (com dois underscores antes e depois da palavra "init").

O método init é um método especial que é chamado quando você cria uma instância de uma classe, e é usado para inicializar os atributos da classe. Como você definiu o método int em vez de init, o Python tentou chamar um método que não existe quando você tentou criar uma instância da classe Data com argumentos.

Então, para corrigir o erro, basta alterar o nome do método int para init e executar novamente o código. Ficaria assim:

class Data:
    def __init__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formatada(self):
        print("{}/{}/{}".format(self.dia, self.mes, self.ano))

Espero ter ajudado! Se tiver mais alguma dúvida, é só perguntar.