



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!