Как сделать по умолчанию свойства пустым словарем в 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}

Но мне кажется, что это как-то неправильно. Правильный ли это вариант или есть разумное решение?


Ответы (0 шт):