Od ''
i 0
są odpowiednio domyślnymi zwracanymi wartościami str()
i int()
funkcji, możesz użyć następującego kodu, aby wstawić te wartości domyślne:
@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)
Niestety z jakiegoś powodu używanie default
parametr field()
funkcja nie działa tak, jak moglibyśmy się spodziewać (może to być błąd dataclasses
backport lub nieporozumienie...). Ale nadal możesz użyć default_factory
aby określić wartości inne niż ''
i 0
za pomocą 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)