

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!


Tudo bem, Pedro?
Quando você chama cls.leitura_csv(path), o Python tenta passar o próprio cls como o parâmetro self da função leitura_csv, mas ela está esperando um objeto já instanciado. Por isso o erro “Dados object has no attribute '_Dadosget_columns'”.
Uma sugestão é transformar também as funções de leitura em métodos privados da classe (com cls em vez de self):
@classmethod
def __leitura_csv(cls, path):
dados_csv = []
with open(path, 'r') as file:
spamreader = csv.DictReader(file, delimiter=',')
for row in spamreader:
dados_csv.append(row)
return dados_csv
@classmethod
def __leitura_json(cls, path):
with open(path, 'r') as file:
dados_json = json.load(file)
return dados_json
E aí seu classmethod leitura_dados fica exatamente assim:
@classmethod
def leitura_dados(cls, path, tipo_dados):
dados = []
if tipo_dados == 'csv':
dados = cls.__leitura_csv(path)
elif tipo_dados == 'json':
dados = cls.__leitura_json(path)
return cls(dados)
Espero ter ajudado e qualquer dúvida, compartilhe no fórum.
Até mais!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado!