(32 пары ключ значение) (dictionary)
- есть датакласс с 5 аргументами. (SomeData)
Вопрос: Как лаконично создать экземпляр датакласса ?
- сделать просто SomeData(**dictionary) не вариант - датакласс плюется, что встречает неизвестные кейворд аргументы.
- Заниматься нарезкой словаря в целом наверное можно....но как то это ...интуитивно коряво что ли.
- можно датакласс переделать, но это тоже не очень.
в общем лаконичных идей нет, время ночь, и похоже не предвидится...
посомтрел. в одном из датаклассов 12 аргументов. понятно что их можно переписать, но это ж такая портянка будет.... пока писал, посетила идея из датакласса вытряхнуть нужные ключи, т.к. в датаклассе есть '__annotations__' которая связывает атрибут и ее тип. Вытряхнуть ключи - в список, а потом при создании сделать срез списка с нужными парами ключ значение...
dataclasses.fields
спасибо то что надо.
Если один датакласс — нормально просто всё вручную перенести, я бы не вводил такую жуткую абстрацию для одной штуки. Если будет несколько — есть библиотеки типа dataclass-factory
коллега подсказал выше. dataclasses.fields(_dataclass_or_instance) - возвращает список полей датакласса в одну строку)
Это понятно. Просто мне кажется, это какая-то преждевременная абстракция.
Обсуждают сегодня