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

Всем привет. Подскажите пожалуйста, я сделал 2 датакласса. @dataclass class DS18B20:

timestamp: int
sensor_id: str
temperature: float


@dataclass
class Sensors:
temperatures: list[DS18B20]

У меня есть цикл, который собирает информацию с датчиков температур, ну и соответственно добавляет объекты датчиков в список temperatures. Вопрос в том, как можно реализовать правильно обновление уже существующих объектов датчиков на основании поля sensor_id? Я что-то не могу допереть.

14 ответов

2 просмотра

а зачем тебе вообще обновлять существующие объекты?

Как вариант Temperstures: Dict(ID:DSlalala)

Andreas-D. Автор вопроса

Информация о температурах, собирается каждую секунду. И для понимания когда было последнее обновление служит поле timestamp. Соответственно я хочу каждую секунду обновлять информацию в этом списке. Но что бы каждый раз не пересоздавать список, объекты и т.д. лучше я думаю обновлять объекты в списке

Andreas-D. Автор вопроса
Den P
Как вариант Temperstures: Dict(ID:DSlalala)

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

Andreas D.
Информация о температурах, собирается каждую секун...

Выглядит как будто тебе нужен словарь, а не список, если тебе нужно часто искать что-то по id. Но что ты делаешь с этими датаклассами потом?

Andreas-D. Автор вопроса
Fᴏʀᴅᴇɴ
ты переизобретаешь prometheus?

не, простая raspberry pi, 6 датчиков температур ну и другого барахла

Andreas D.
так было изначально, но я пришел к такой схеме как...

Тебе нужна история обновления? Или объект DSlalala всегда один на один датчик?

Andreas-D. Автор вопроса
Den P
Тебе нужна история обновления? Или объект DSlalala...

На каждый датчик = один объект, у каждого датчика есть температура, и его ID ( постоянный). Изначально была схема: @dataclass class Sensors: temperature: dict[str, float] = field(default_factory=dict) while True: available_sensors = W1ThermSensor().get_available_sensors() for x in available_sensors: Sensors.temperature[x.id] = x.get_temperature() Но я почему-то решил что лучше бы знать время последнего обновления каждого датчика, timestamp.

Andreas D.
На каждый датчик = один объект, у каждого датчика ...

Так сложи в словарь объекты, а не просто температуру. Будет у тебя и время обновления, и всё что нужно.

Andreas D.
На каждый датчик = один объект, у каждого датчика ...

Только вот ты что-то очень странное сотворил с датаклассами. Где экземеляр Sensors и почему в коде обновления он с большой буквы?

Andreas-D. Автор вопроса
evle
Только вот ты что-то очень странное сотворил с дат...

экземпляр создан чуть выше, я здесь чуть ужал код для компактности Sensors = Sensors()

Andreas D.
На каждый датчик = один объект, у каждого датчика ...

while True: available_sensors = W1ThermSensor().get_available_sensors() for x in available_sensors: Sensors.temperature[x.id] = Dslala(x.get_temperature(), now) Замени последнюю строку

Andreas D.
экземпляр создан чуть выше, я здесь чуть ужал код ...

Ой. Ты затенил класс экземпляром. Экземпляры принято называть с маленькой буквы. Путаешь других и себя в будущем.

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

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

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
61
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Привет всем. Не знаю, удачный ли чатик я выбрал для вопроса, но он как будто в целом про концепцию фп и конкретно про Haskell. Прочитал, что в целом в мире фп нет идеи мутабел...
Gellert Cringewald
15
Как добавить ссылку в Быстрый доступ в Проводнике windows 10? Нашёл, как на power shell сделать, но может есть способ через Дельфи?
А
31
@helgispbru @Dreamer_0x01 @Pathologic93 @webber_12 Не уверен, что вам всем это жутко интересно, но в продолжение недавнего диалога отправлю свои наброски. Хочу понять, правил...
Андрей [aharito] Харитонов
13
Карта сайта