т.е. мы не знаем, сколько атрибутов будет у экземпляра класса, но есть словарь для каждого экземпляра.
Соответственно, существует ли возможность создавать атрибуты класса, основываясь на словаре экземпляра?
setattr(object, name, value) А... Или ты хочешь в самом классе динамически переписывать атрибуты, прогнав через установщик атрибутов кучу экземпляров класса?
по факту, всегда будет создаваться один экземпляр класса, но всегда с разным количеством атрибутов. Короче проще походу в функцию все это вывести
Как он будет создаваться, если он у тебя уже есть? В опщем, диковато как-то
Смотри. Есть данные вида: filename, class0, class1, .. , classN a.jpg, value0, value1, ..., valueN Класс предназначен для того, чтобы переварить эти данные и посчитать статистику и т.п. Проблема в том, что мы не знаем сколько будет классов, может быть 2, может быть 20. у меня есть кусок кода такой: class DatatAttributes: def __init__(self, annotation_path, number_of_classes): classes = {} for i in range(0, number_of_classes): classes[f'class{i}'] = [] with open(annotation_path) as f: reader = csv.DictReader(f) for row in reader: for i in range(0, number_of_classes): classes[f'class{i}'].append(row[f'class{i}']) self.number_class0 = len(np.unique(classes['class0'])) В данном случае мы создаем аттрибут number_class0, который сохраняет в себе уникальные значения по всем файла для столбца class0. И тут все понятно. Но я не знаю сколько у меня будет этих столбцов
Я может не совсем верно тебя понял, но не проще сделать поле filename_classes со списком внутри, где все это классы хранить?
хм, можно сделать словарь, по типу: self.classes_values = {} потом в него запихать значения class0: 200, class1: 150, ..., classN: N
Ну либо словарь, я не знаю что для тебя лучше. Но на будущее, если ты в какой-то момент начинаешь хотеть прикрутить метакласс, всякие setattr использовать или интерполяции, то стоит начать с того, чтобы подумать как можно этого избежать. Возможно стоит переделать всю архитектуру даже, но отказаться от такой залупы, потому что ее поддерживать это ад натуральный(я сейчас этим занимаюсь, это шок)
согласен, я поэтому и пришел сюда, чтобы свежий взгляд посмотрел и сказал, что это залупа
А ну это нормально) Я просто на всякий случай написал, не воспринимай как критику
Обсуждают сегодня