Eu vi que um colega do curso possui uma dúvida semelhante a minha, porém mesmo após ler a explicação no post sugerido continuei com dúvidas. Por que foi usado o @staticmethod para criar a factory?
class Documento:
@staticmethod
def cria_documento(documento):
documento = str(documento)
if len(documento) == 11:
return DocCpf(documento)
elif len(documento) == 14:
return DocCnpj(documento)
else:
raise ValueError("Quantidade de dígitos inválida")