Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro ao validar CNPJ

O PyCharm me retorna o erro "return DocumentCnpj(document) TypeError: object() takes no parameters" como se a classe não estivesse definida para receber o documento, porém ao realizar o teste seguindo a mesma lógica no CPF o programa executa sem falhas, normalmente.

Poderiam me ajudar, me informando onde está o meu erro?

Segue os dois arquivos que estou utilizando neste caso:

from cpf_and_cnpj import Document

test_cpf = "12354367996"
test_cnpj = "15436940000103"

document_cnpj = Document.create_document(test_cnpj)
document_cpf = Document.create_document(test_cpf)

print(document_cnpj)
print(document_cpf)
from validate_docbr import CPF, CNPJ


class Document:
    @staticmethod
    def create_document(document):
        if len(document) == 11:
            return DocumentCpf(document)
        elif len(document) == 14:
            return DocumentCnpj(document)
        else:
            raise ValueError("Quantidade de dígitos está incorreta")


class DocumentCpf:
    def __init__(self, document):
        if self.authenticate_cpf(document):
            self.cpf = document
        else:
            raise ValueError("CPF inválido")

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

    def authenticate_cpf(self, document):
        validator = CPF()
        return validator.validate(document)

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


class DocumentCnpj:
    def __int__(self, document):
        if self.authenticate_cnpj(document):
            self.cnpj = document
        else:
            raise ValueError("CNPJ inválido")

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

    def authenticate_cnpj(self, document):
        validator = CNPJ()
        return validator.validate(document)

    def format_cnpj(self):
        cnpj_mask = CNPJ()
        return cnpj_mask.mask(self.cnpj)
1 resposta
solução!

Oii Joamir, como você está?

Isso está acontecendo por um pequeno errinho de sintaxe. Na classe DocumentCnpj está escrito __int__ ao invés de __init__. Com apenas essa correção o seu código deverá funcionar como esperado. Abaixo, o código dessa classe com a correção:

class DocumentCnpj:
    def __init__(self, document):
        if self.authenticate_cnpj(document):
            self.cnpj = document
        else:
            raise ValueError("CNPJ inválido")

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

    def authenticate_cnpj(self, document):
        validator = CNPJ()
        return validator.validate(document)

    def format_cnpj(self):
        cnpj_mask = CNPJ()
        return cnpj_mask.mask(self.cnpj)

Qualquer dúvida estou por aqui.

Grande abraço!