Eu achei esse sistema meio furado, porque a classe Documento é completamente desnecessária. Não existe nenhum tipo de relação entre entre DocCpf e DocCnpj, nem deles com Documento (o fato deles terem os mesmo nomes de métodos não significa que existe polimorfismo). Inclusive a classe Documento poderia ser simplesmente uma função:
from cpf_cnpj import criar_documento
exemplo_cpf = "89525070026"
exemplo_cnpj = "35379838000112"
doc1 = criar_documento(exemplo_cpf)
doc2 = criar_documento(exemplo_cnpj)
print(doc1, doc2)
#class Documento:
# @staticmethod
def criar_documento(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:
# Mesmo codigo
class DocCnpj:
# Mesmo codigo