Гуглю и не врубаюсь, как правильно сделать датакласс, в котором я изначально не знаю значения полей. Я знаю типы, но значение будет известно только после нескольких циклов. Простейший пример, счётчик минимального числа, т.е. при обработке некоторого объекта мне надо отобрать объект с минимальным отклонением, которое измеряется целочисленным значением и не может быть меньше нуля. Однако может быть очень большим числом, хотя в 99% случаев будет не больше сотни. Объект сложный, так что датакласс хочется делать. Проблема в том, что стандартный фокус на случай максимума с подстановкой 0 и увеличением не годится. А писать None как-то идеологически неправильно.
from dataclasses import dataclass
@dataclass
class ShortestWord:
word: str
length: int
first_shortest_word = ShortestWord(None, None)
a = ['Вася', 'ел', 'бананы']
for word in a:
if first_shortest_word.word is None:
first_shortest_word.word = word
first_shortest_word.length = len(word)
else:
if first_shortest_word.length > len(word):
first_shortest_word.word = word
first_shortest_word.length = len(word)
print(first_shortest_word)
PS
Можно конечно и простой класс бахнуть, но фиг лучший ли это вариант.
PPS
А всё из-за довольно большого числа полей и вообще шляпного алгоритма из костылей, я не хочу чтобы люди кому это достанется бахнули не тот тип в не то поле, так как много похожих полей, разных по смыслу но похожих, так хоть IDE их ругнёт.
PPPS
Я знаю что этот пример можно упростить, но в реальности там ещё десяток отдельных полей которые надо считать и я хочу отбрасывать те объекты для которых явно считать бессмысленно. Так что ещё несколько циклов for пропущено.