Oi pessoal, tudo bem? Com o objetivo de fixar os conceitos, eu costumo escrever meu um pouco diferente do que foi construído na aula. só que estou enfenrentando um problema de type error no retorno do str do meu código. Ainda não evoluí para utilização das bibliotecas externas de validação de cpf, então, tudo o que está sendo usando no meu código é instanciado no próprio código.
veja que eu até passo uma validação para verificar se o que está retornando como número de documento realmente é uma string (print(type(self.numdoc))), e o retorno é positivo.
Meu código completo:
class ValidaCPF:
def __init__(self, numdoc):
numdoc = str(numdoc)
self.numdoc = numdoc
doclen = len(numdoc)
self.validaDigitos(doclen)
def __str__(self):
return self.formataMascara()
def validaDigitos(self, doclen):
if doclen == 11:
print(type(self.numdoc)) #validando o tipo para ter certeza de que está chegando um str no __str__
else:
raise ValueError('!! Quantidade de dígitos do CPF está incorreta !!')
def formataMascara(self):
trecho1 = self.numdoc[0:3]
trecho2 = self.numdoc[3:6]
trecho3 = self.numdoc[6:9]
trecho4 = self.numdoc[9:11]
return (print(f" Documento formatado pela máscara: {trecho1}.{trecho2}.{trecho3}-{trecho4}"))
Estou chamando da seguinte forma:
from rascunho_classes import ValidaCPF
cpf1 = 35249935618
doc1 = ValidaCPF(cpf1)
print(doc1)
O retorno é o seguinte:
<class 'str'>
Documento formatado pela máscara: 352.499.356-18
Traceback (most recent call last):
File "c:\Users\rafael.franco\Documents\pythonAlura\rascunho.py", line 8, in <module>
print(doc1)
TypeError: __str__ returned non-string (type NoneType)
PS C:\Users\rafael.franco\Documents\pythonAlura>
poderiam me orientar para me ajudar a resolver esse enrosco? :)
Veja que mesmo retornando o type error, ainda sim ele devolve a máscara formatada. de alguma forma a construtora str está funcionando, mesmo com a exceção.