Minha dúvida no final da página!
Código:
class Documento:
def __init__(self, documento):
self.documento = documento
self.valida_documento()
def valida_documento(self):
if (len(self.documento) == 11):
return DocCpf(self.documento)
elif (len(self.documento) == 14):
return DocCnpj(self.documento)
else:
raise ValueError("Quantidade de números inválida!")
class DocCpf:
def __init__(self, documento):
self.documento = documento
self.validacao_cpf()
def validacao_cpf(self):
import re
numeros = [int(digito) for digito in self.documento if digito.isdigit()]
soma_produtos = sum(a*b for a, b in zip(numeros[0:9], range(10, 1, -1)))
digito_esperado = (soma_produtos * 10 % 11) % 10
if numeros[9] == digito_esperado:
soma_produtos1 = sum(a*b for a, b in zip(numeros [0:10], range (11, 1, -1)))
digito_esperado1 = (soma_produtos1 *10 % 11) % 10
if numeros[10] == digito_esperado1:
return self.documento
raise ValueError("CPF inválido!")
def __str__(self):
return f"{self.documento[:3]}.{self.documento[3:6]}.{self.documento[6:9]}-{self.documento[9:]}"
class DocCnpj:
def __init__(self, documento):
self.documento = documento
def __str__(self):
return f"{self.documento[:2]}.{self.documento[2:5]}.{self.documento[5:8]}/{self.documento[8:12]}-{self.documento[12:]}"
Primeiro método:
cpf = "07650262367"
teste = Documento(cpf)
print(teste)
"Saída ERRADA: <__main__.Documento object at 0x00000190D6D37530>"
Segundo método:
cpf = "07650262367"
teste = Documento(cpf)
print(teste.valida_documento())
"Saída CORRETA: 076.502.623-67"
Minha dúvida: Gostaria de obter a saída correta (como mostra no segundo método) sem precisar chamar a função 'valida.documento()', tentei fazer isso no primeiro método mas a saída foi errada, gostaria que a classe 'Documento' já iniciasse essa função automaticamente. O que devo mudar no codigo para que isso seja possível? (Por favor, ignore a classe 'DocCnpj' pois ainda não está pronta, minha duvida está relacionada apenas as classes 'Documento' e 'DocCpf')