1
resposta

Fiz o codigo de uma forma diferente!

Olá, diferente da aula, eu decidi fazer uma classe especifica para CPF e outra para CNPJ, na aula o professor fez uma classe misturando os dois, falando em organização de codigo, o meu está bom? ou seria melhor juntar as duas classe numa só?

from validate_docbr import CPF
from validate_docbr import CNPJ

class Cpf:
    def __init__(self, documento):
        documento = str(documento)
        if self.cpfValido(documento):
            self.cpf = documento
        else:
            raise ValueError('Cpf invalido')

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


    def cpfValido(self, documento):
        if len(str(documento)) == 11:
            validador = CPF()
            return validador.validate(documento)
        else:
            raise ValueError('Quantidade de digitos invalida')

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

class Cnpj:
    def __init__(self, documento):
        documento = str(documento)
        if self.cnpj_valido(documento):
            self.documento = documento
        else:
            raise ValueError('Cnpj invalido')

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


    def cnpj_valido(self, documento):
        if len(documento) == 14:
            cnpj = CNPJ()
            if cnpj.validate(documento):
                return True
        else:
            raise ValueError('Quantidade de digitos invalida!')

    def format_cnpj(self):
        cnpj = CNPJ()
        return cnpj.mask(self.documento)
1 resposta

Oi Caio, como você está? Espero que esteja bem ^-^

Não sei em qual atividade você está, mas nesta aula o professor refatora o código e extrai o código para classes separadas, uma para CPF e outra para CNPJ.

No geral, fica com uma organização bem mais limpa separando em classes da forma que fez, mandou super bem! Seu código está ótimo =)

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software