Python dataclasses: опустить поле в asdict - PullRequest
0 голосов
/ 05 мая 2020

Я начал активно использовать модуль python dataclasses и считаю его очень полезным. Мне особенно нравятся флаги, которые могут быть установлены в каждом поле, что позволяет переключать сравнение, init et c.

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

Может ли кто-нибудь еще предложить чистую способ сделать это? Разве это не будет полезным дополнительным флагом для добавления в модуль классов данных?

1 Ответ

1 голос
/ 19 августа 2020

Вы можете добавить собственные метаданные в поле, например field(metadata={"include_in_dict":True}), и в dict_factory вы можете проверить это перед любым другим и пропустить поле при необходимости.

if field_.metadata.get("include_in_dict", False):
    continue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...