Bom dia! Notei que o código que o professor escreveu não funciona quando passamos um CPF ou CNPJ já formatados (por exemplo, 153.162.647-54 ou 35.379.838/0001-12), pois a função cria_documento avalia se o documento passado tem o comprimento de um CPF ou CNPJ não formatados, tamanhos 11 e 14 respectivamente.
Assim, pensei numa estratégia que permita à função também validar documentos já formatados. Para isso usei regex para substitui os caracteres não numéricos por strings vazias. Assim:
from validate_docbr import CPF, CNPJ
import re
class Documento:
@staticmethod
def cria_documento(documento):
documento = re.sub(r'[./-]', "", documento) # Substitui os caracteres '.', '/' e '-' por strings vazias ("").
if len(documento) == 11:
return DocCpf(documento)
elif len(documento) == 14:
return DocCnpj(documento)
else:
raise ValueError('Quantidade de dígitos está incorreta!!')