Da ''
e 0
sono rispettivamente i valori restituiti di default di str()
e int()
funzioni, è possibile utilizzare il seguente codice per inserire quelle impostazioni predefinite:
@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)
Sfortunatamente, per qualche motivo, utilizzando default
parametro di field()
la funzione non funziona come ci si potrebbe aspettare (potrebbe essere un bug delle dataclasses
backport o un malinteso...). Ma puoi comunque usare il default_factory
per specificare valori diversi da ''
e 0
utilizzando 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)