Kể từ ''
và 0
tương ứng là các giá trị trả về mặc định của str()
và int()
, bạn có thể sử dụng mã sau để chèn các giá trị mặc định:
@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)
Rất tiếc, vì một số lý do, sử dụng default
tham số của field()
chức năng không hoạt động như chúng tôi mong đợi (có thể là lỗi của dataclasses
phản hồi hoặc hiểu nhầm ...). Nhưng bạn vẫn có thể sử dụng default_factory
để chỉ định các giá trị khác biệt với ''
và 0
sử dụng 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)