Sedan ''
och 0
är respektive standard returnerade värden för str()
och int()
funktioner, kan du använda följande kod för att infoga dessa standardvärden:
@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)
Tyvärr, av någon anledning, använder default
parameter för field()
funktionen fungerar inte som vi kunde förvänta oss (kan vara en bugg i dataclasses
backport eller ett missförstånd...). Men du kan fortfarande använda default_factory
för att ange värden som skiljer sig från ''
och 0
med 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)