1
resposta

DocCnpj() takes no arguments

Ja tentei re escrever de todas as formas, mas não consigo ver onde errei alguem poderia me ajudar.

from validate_docbr import CPF, CNPJ

class Documento:
    @staticmethod
    def cria_documento(documento):
        documento = str(documento)
        if len(documento) == 11:
            return DocCpf(documento)
        elif len(documento) == 14:
            return DocCnpj(documento)
        else:
            raise ValueError("Quantidade de digitos esta incorreta!!!")

class DocCpf:
    def __imit__(self,documento):
        if self.cpf_e_valido(documento):
            self.cpf = documento
        else:
            raise ValueError("Cpf invalido!")

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

    def cpf_e_valido(self, cpf):
            validador_cpf = CPF()
            return validador_cpf.validate(cpf)

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

class DocCnpj:
    def __imit__(self,documento):
        if self.cnpj_e_valido(documento):
            self.cnpj = documento
        else:
            raise ValueError("Cnpj invalido!")

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

    def cnpj_e_valido(self, cnpj):
            validador_cnpj = CNPJ()
            return validador_cnpj.validate(cnpj)

    def formtar_cnpj(self):
        mascara = CNPJ()
        return mascara.mask(self.cnpj)

Quando eu tento rodar:

from cpf_cnpj import Documento

exemplo_cpf = "50927117878"
exemplo_cnpj = "33592510000154"
documento = Documento.cria_documento(exemplo_cnpj)
print(documento)

Aparece o erro:

Traceback (most recent call last):
  File "D:/Felipe Coquito/Documents/PycharmProjects/Alura - Py 3/Py Br dados/main.py", line 5, in <module>
    documento = Documento.cria_documento(exemplo_cnpj)
  File "D:\Felipe Coquito\Documents\PycharmProjects\Alura - Py 3\Py Br dados\cpf_cnpj.py", line 10, in cria_documento
    return DocCnpj(documento)
TypeError: DocCnpj() takes no arguments
1 resposta

Oi Felipe, boa noite, tudo bem?

Cara, tanto a função no Cpf, quanto no Cnpj, a primeira função está __imit__ com "m", o correto é __init__ com "n".