Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Uso de argumentos na classe CPF

Por que na classe Cpf foi criado o argumento 'documento' no módulo 'cpf_valido' e não foi usado nenhum argumento no módulo 'format_cpf'? Qual a diferença entre eles?

class Cpf:
    def __init__(self,documento):
        #Deve ser string pq n posso fazer len de inteiro
        documento = str(documento)
        if self.cpf_valido(documento):
            self.cpf = documento
        else:
            raise ValueError('CPF Inválido')

    def cpf_valido(self,documento):
        if len(documento) == 11:
            return True
        else:
            return False

    def format_cpf(self):
        fatia_um = self.cpf[:3]
        fatia_dois = self.cpf[3:6]
        fatia_tres = self.cpf[6:9]
        fatia_quatro = self.cpf[9:]
        return f'{fatia_um}.{fatia_dois}.{fatia_tres}-{fatia_quatro}'

    def __str__(self):
        return self.format_cpf()
2 respostas
solução!

Oi Rodolpho, tudo bem ?

Neste caso, não foi necessário passar o argumento na função format_cpf, porque no construtor __init___ pegamos o valor do documento e atribuímos a variável cpf, caso o mesmo seja válido, fazendo:

 if self.cpf_eh_Valido(documento):
            self.cpf = documento

Então, na função para formatar o cpf pegamos o valor da variável cpf diretamente, pois a mesma já foi preenchida com o valor do documento.

Já na função para testar se o cpf é válido, precisamos ter como parâmetro a variável documento pois, o mesmo só será um cpf caso passe por este teste de validação.

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Rodolpho, se essa resposta te ajudou coloca como solucionado (por favor) para que ela saia da lista de questões sem solução no fórum!