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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software