Как сделать по умолчанию свойства пустым словарем в dataclasses?
Сейчас работает так:
from dataclasses import dataclass
@dataclass()
class Projects():
f1: dict
f2: dict
p = Projects({},{})
print(p) # Projects(f1={}, f2={})
p.f1.update({'s':3})
print(p) # Projects(f1={'s': 3}, f2={})
print(p.f1) # {'s': 3}
Но я не хочу при создании объекта писать пустые словари. Реализовал задуманное так:
from dataclasses import dataclass, field
@dataclass()
class Projects():
f1: dict = field(init=False, default=dict)
f2: dict = field(init=False, default=dict)
def __post_init__(self):
self.f1 = {}
self.f2 = {}
p = Projects()
print(p) # Projects(f1={}, f2={})
p.f1.update({'s':3})
print(p) # Projects(f1={'s': 3}, f2={})
print(p.f1) # {'s': 3}
Но мне кажется, что это как-то неправильно. Правильный ли это вариант или есть разумное решение?