Sejak ''
dan 0
masing-masing adalah nilai default yang dikembalikan dari str()
dan int()
fungsi, Anda dapat menggunakan kode berikut untuk memasukkan default tersebut:
@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)
Sayangnya, untuk beberapa alasan, menggunakan default
parameter field()
fungsi tidak bekerja seperti yang kita harapkan (bisa jadi bug dari dataclasses
backport atau kesalahpahaman...). Tetapi Anda masih dapat menggunakan default_factory
untuk menentukan nilai yang berbeda dari ''
dan 0
menggunakan 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)