4
respostas

Error - TypeError: CPF.__init__() missing 1 required positional argument: 'documento'

Senhores, Peço ajuda, já busquei em vários itens desse forum, bem como na própria documentação Python. Admito que ainda "não estou" fluente em POO, e certamente deve ser um simples erro, de toda forma gostaria de sanar a dúvida antes de partir para as próximas atividades. Abaixo temos a criação da nossa classe.

from validate_docbr import CPF

class CPF:
    def __init__(self, documento):
        documento = str(documento)
        if self.cpf_eh_valido(documento):
            self.cpf = documento
        else:
            raise ValueError("CPF inválido!")

    def cpf_eh_valido(self, cpf):
        if len(cpf) == 11:
            validador = CPF()
            return validador.validate(cpf)
        else:
            raise ValueError("Quantidade de dígitos inválida!")

    def format_cpf(self):
        mascara = CPF()
        return mascara.mask(self.cpf)

    def __str__(self):
        return self.format_cpf()

No quadro abaixo temos o chamado da classe para a execução do algoritmo.

from cpf import CPF

cpf_um = CPF(15316264754)
print(cpf_um)

O erro apontado segue ao apresentado no título do tópico que transcrevo no bloco abaixo:

Traceback (most recent call last):
  File "C:\\Python3 - Brasilidades\main.py", line 3, in <module>
    cpf_um = CPF(15316264754)
  File "C:\\Python3 - Brasilidades\cpf.py", line 6, in __init__
    if self.cpf_eh_valido(documento):
  File "C:\\Python3 - Brasilidades\cpf.py", line 13, in cpf_eh_valido
    validador = CPF()
TypeError: CPF.__init__() missing 1 required positional argument: 'documento'

Se alguem puder me ajudar, agradeço!

4 respostas

Dentro da sua classe você está iniciando a própria classe em algumas variáveis sem atribuir os valores iniciais obrigatórios, que não entendi o motivo mas seu erro por hora está sendo isso. Deixo um exemplo abaixo de como está e como "deveria" estar:

validador = CPF()   

#validador = CPF(123456789)

Thiago, Muito obrigado pela sua atenção! Já tentei fazer isso e não solucionou meu problema!!

O erro divulgado no tópico é relativo ao que eu mencionei, são duas linhas:

            validador = CPF()

e

        mascara = CPF()

Se você adicionar os numerais de 1 a 9 dentro da construção da classe como fiz no exemplo, o erro gerado será o que está programado para aparecer:

    raise ValueError("Quantidade de dígitos inválida!")
ValueError: Quantidade de dígitos inválida!

Que é justamente a invalidação do número do CPF por claramente ser um número inválido que não passou no teste... Se te mostra outro erro compartilhe conosco

QUando preenchi na construtora da classe como sugerido, apareceu o segunite erro que mostro abaixo. (número de interações (recurssão) extrapolada). Segue abaixo o erro que aparece então:Insira aqui a descrição dessa imagem para ajudar na acessibilidade