Я хотел бы иметь класс данных Python с необязательными атрибутами, которые можно было бы передать во время инициализации через kwargs
.
Что-то типа
@dataclass(allow_kwargs_init=True)
class Person:
name: str
birth_year: int
me = Person("myself", 1910)
you = Person("yourself", 2020, company="StackOverflow")
print(me) # Person(name='myself', birth_year=1910)
print(you) # Person(name='yourself', birth_year=2020, company='StackOverflow')
Есть ли способ без переписывания функций __init__
и __repr__
?
repr
создается во время создания класса и проверяет только поля, известные на тот момент, поэтому, к сожалению, я не понимаю, как вы могли это легко получить. Сочетание предложения связанного дубликата, вероятно, выглядело бы лучше всего, где у вас есть полеextra: field(default_factory=dict)
и поле@classmethod
, которое заполняет этот дополнительный словарь каждым неродным kwarg. - person Arne   schedule 06.07.2021