Boa tarde galera, beleza?
Gente, to procurando algumas ideias aqui... se puderem me ajudar, fico muito agradecido. Conforme o código abaixo, estou fazendo um gerador de CPF e CNPJ no Pycharm, porém, ao tentar fazer uma classe de gerar CNH dá pau pois esta e o CPF possuem a mesma quantidade de caracteres.
Já tentei uma porrada de coisas e nada deu certo. Alguém aí teria alguma ideia de como resolver isso?
Muito obrigado!
from validate_docbr import CPF, CNPJ, CNH
class Documento:
@staticmethod
def cria_documento(documento):
if len(documento) == 11:
return DocCpf(documento)
elif len(documento) == 12:
return DocCnh(documento)
elif len(documento) == 14:
return DocCnpj(documento)
else:
raise ValueError("Quantidade de dígitos é inválida")
class DocCpf:
def __init__(self, documento):
if self.valida(documento):
self.cpf = documento
else:
raise ValueError("CPF inválido")
def __str__(self):
return self.format()
def valida(self, documento):
validador = CPF()
return validador.validate(documento)
def format(self):
mascara = CPF()
return mascara.mask(self.cpf)
class DocCnpj:
def __init__(self, documento):
if self.valida(documento):
self.cnpj = documento
else:
raise ValueError("CNPJ inválido")
def __str__(self):
return self.format()
def valida(self, documento):
validador = CNPJ()
return validador.validate(documento)
def format(self):
mascara = CNPJ()
return mascara.mask(self.cnpj)
class DocCnh:
def __init__(self, documento):
if self.valida(documento):
self.cnh = documento
else:
ValueError("CNH inválida")
def __str__(self):
return self.format()
def valida(self, documento):
validador = CNH()
return validador.validate(documento)
def format(self):
mascara = CNH()
return mascara.mask(self.cnh)