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

Erro de atributo: "DocCPF" objeto não tem atributo "format"

Eu realmente não sei o que esta errado. Eu olhei diversas vezes o do professor e não acho o erro.

class DocCPF: def init(self, documento): if self.valida(documento): self.cpf = documento else: raise ValueError("Cpf invalido!")

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

def valida(self, documento):     
    validador_cpf = CPF()
    return validador_cpf.validate(documento)

def formata(self):
    mascara = CPF()
    return mascara.mask(self.cpf)

class DocCNPJ: def init(self, documento): if self.valida(documento): self.cnpj = documento else: raise ValueError("Cnpj invalido!")

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

def valida(self, documento):     
    validador_cnpj = CNPJ()
    return validador_cnpj.validate(documento)

def formata(self):
    mascara = CNPJ()
    return mascara.mask(self.cnpj)
1 resposta
solução!

Boa noite, Paulo!

O erro está ocorrendo porque nas suas duas classes a def __str__(self): está retornando a função self.format(), sendo que ela não existe. Você chamou sua função de formatação de def formata(self): e não def format(self):. Para que funcione você pode deixar o return do str como formata(), ou alterar o nome das suas funções de formatação para def format(self):. Vou postar o código inteiro e somente as partes que estão diferentes:

def __str__(self):
    return self.formata()      # deixar esse return como formata(), ou:

def formata(self):            # mudar o nome para format()
    mascara = CPF()
    return mascara.mask(self.cpf)

Código completo:

from validate_docbr import CPF, CNPJ

class DocCPF:
  def __init__(self, documento): 
    if self.valida(documento): 
      self.cpf = documento 
    else: 
      raise ValueError("Cpf invalido!")

  def __str__(self):
    return self.formata()      # deixar esse return como formata(), ou:

  def valida(self, documento):     
    validador_cpf = CPF()
    return validador_cpf.validate(documento)

  def formata(self):            # mudar o nome para format()
    mascara = CPF()
    return mascara.mask(self.cpf)



class DocCNPJ:
  def __init__(self, documento):
    if self.valida(documento): 
      self.cnpj = documento
    else:
      raise ValueError("Cnpj invalido!")

  def __str__(self):          # deixar esse return como formata(), ou:
    return self.formata()

  def valida(self, documento):     
    validador_cnpj = CNPJ()
    return validador_cnpj.validate(documento)

  def formata(self):          # mudar o nome para format()
    mascara = CNPJ()
    return mascara.mask(self.cnpj)

Espero ter ajudado!

Se conseguiu resolver poderia marcar como solução para eu saber, por favor?

No mais, 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