Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] AttributeError

Olá, estou com um problema em meu código e não sei como resolver, segue abaixo o código do arquivo Cpf.

class Cpf:
    def __int__(self, documento):
        documento = str(documento)
        if self.cpf_eh_valido(documento):
            self.cpf = documento
        else:
            raise ValueError("CPF inválido!")

    def __str__(self):
        return self.format_cpf()

    def cpf_eh_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}'

e no arquivo main ta assim:

from cpf import Cpf

cpf = "15222436599"
objeto_cpf = Cpf()

print(objeto_cpf)

porém quando eu rodo o programa aparece o erro:

Traceback (most recent call last):
  File "C:\Users\mvini\bytebank\main.py", line 6, in <module>
    print(objeto_cpf)
  File "C:\Users\mvini\bytebank\cpf.py", line 17, in __str__
    return self.format_cpf()
           ^^^^^^^^^^^^^^^^^
  File "C:\Users\mvini\bytebank\cpf.py", line 20, in format_cpf
    fatia_um = self.cpf[:3]
               ^^^^^^^^
AttributeError: 'Cpf' object has no attribute 'cpf'

se alguém souber como resolver me da um help!

1 resposta
solução!

Olá Marcos, tudo bem com você?

O erro de atributo apresentado (AttributeError), está ocorrendo devido à declaração do método inicializador da classe Cpf no arquivo cpf.py, ter sido realizado da seguinte forma: __int__ (sem um i) o correto será: __init__ (com dois is).

Peço que no arquivo cpf.py modifique a declaração do nome do método inicializador, deixando como apresentado abaixo:

    def __init__(self, documento):
        #codigo do método aqui

Após realizar essa mudança, abra o arquivo main.py. Neste arquivo, no momento em que o objeto da classe (objeto_cpf) é criado, devemos passar um atributo no momento da chamada da classe, neste caso, passando a variável cpf, ficando da seguinte forma: objeto_cpf = Cpf(cpf).

Código completo do arquivo main.py

from cpf import Cpf

cpf = "15222436599"
objeto_cpf = Cpf(cpf)

print(objeto_cpf)

Feita as mudanças descritas acima, salve os arquivos. Execute o arquivo main.py e verifique o resultado apresentado.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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