Sinds ''
en 0
zijn respectievelijk standaard geretourneerde waarden van str()
en int()
functies, kunt u de volgende code gebruiken om die standaardwaarden in te voegen:
@dataclass
class Person:
id: int = None
name: str = field(default_factory=str)
age: int = field(default_factory=int)
hobbies: List[str] = field(default_factory=list)
birthday: datetime = field(default_factory=datetime)
Helaas, om de een of andere reden, met behulp van default
parameter van field()
functie werkt niet zoals we zouden verwachten (kan een bug zijn van de dataclasses
achterpoortje of een misverstand...). Maar je kunt nog steeds de default_factory
. gebruiken om waarden te specificeren die verschillen van ''
en 0
met behulp van lambda
:
@dataclass
class Person:
id: int = None
name: str = field(default_factory=lambda: 'john doe')
age: int = field(default_factory=lambda: 77)
hobbies: List[str] = field(default_factory=list)
birthday: datetime = field(default_factory=datetime)