170 похожих чатов

Господа, максимально тупой вопрос. можно ли определить атрибут класса автоматически. Ну

т.е. мы не знаем, сколько атрибутов будет у экземпляра класса, но есть словарь для каждого экземпляра.
Соответственно, существует ли возможность создавать атрибуты класса, основываясь на словаре экземпляра?

10 ответов

11 просмотров

setattr(object, name, value) А... Или ты хочешь в самом классе динамически переписывать атрибуты, прогнав через установщик атрибутов кучу экземпляров класса?

Usefff- Автор вопроса
Ярослав
setattr(object, name, value) А... Или ты хочешь в...

по факту, всегда будет создаваться один экземпляр класса, но всегда с разным количеством атрибутов. Короче проще походу в функцию все это вывести

Usefff
по факту, всегда будет создаваться один экземпляр ...

Как он будет создаваться, если он у тебя уже есть? В опщем, диковато как-то

Usefff- Автор вопроса

Смотри. Есть данные вида: 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. И тут все понятно. Но я не знаю сколько у меня будет этих столбцов

Usefff
Смотри. Есть данные вида: filename, class0, class1...

Я может не совсем верно тебя понял, но не проще сделать поле filename_classes со списком внутри, где все это классы хранить?

Usefff- Автор вопроса
Илья Власов
Я может не совсем верно тебя понял, но не проще сд...

хм, можно сделать словарь, по типу: self.classes_values = {} потом в него запихать значения class0: 200, class1: 150, ..., classN: N

Usefff
хм, можно сделать словарь, по типу: self.classes_v...

Ну либо словарь, я не знаю что для тебя лучше. Но на будущее, если ты в какой-то момент начинаешь хотеть прикрутить метакласс, всякие setattr использовать или интерполяции, то стоит начать с того, чтобы подумать как можно этого избежать. Возможно стоит переделать всю архитектуру даже, но отказаться от такой залупы, потому что ее поддерживать это ад натуральный(я сейчас этим занимаюсь, это шок)

Usefff- Автор вопроса
Илья Власов
Ну либо словарь, я не знаю что для тебя лучше. Но ...

согласен, я поэтому и пришел сюда, чтобы свежий взгляд посмотрел и сказал, что это залупа

Usefff
согласен, я поэтому и пришел сюда, чтобы свежий вз...

А ну это нормально) Я просто на всякий случай написал, не воспринимай как критику

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Есть предложения, как подобное можно упростить?
Hemul GM
12
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Карта сайта