用法:
dataclasses.field(*, default=MISSING, default_factory=MISSING, init=True, repr=True, hash=None, compare=True, metadata=None, kw_only=MISSING)對於常見和簡單的用例,不需要其他函數。但是,有些數據類函數需要額外的 per-field 信息。為了滿足對附加信息的需求,您可以通過調用提供的
field()函數來替換默認字段值。例如:@dataclass class C: mylist: list[int] = field(default_factory=list) c = C() c.mylist += [1, 2, 3]如上所示,
MISSING值是一個哨兵對象,用於檢測是否有用戶提供了某些參數。使用此標記是因為None是某些具有不同含義的參數的有效值。任何代碼都不應直接使用MISSING值。field()的參數是:default:如果提供,這將是該字段的默認值。這是必需的,因為field()調用本身會替換默認值的正常位置。default_factory:如果提供,它必須是 zero-argument 可調用對象,當該字段需要默認值時將調用該可調用對象。除其他目的外,這可用於指定具有可變默認值的字段,如下所述。同時指定default和default_factory是錯誤的。init:如果為 true(默認值),則此字段作為參數包含在生成的__init__()方法中。repr:如果為 true(默認值),則此字段包含在生成的__repr__()方法返回的字符串中。hash:這可以是布爾值或None。如果為真,則此字段包含在生成的__hash__()方法中。如果None(默認),使用compare的值:這通常是預期的行為。如果某個字段用於比較,則應在哈希中考慮該字段。不鼓勵將此值設置為None以外的任何值。設置
hash=False但設置compare=True的一個可能原因是,如果一個字段計算哈希值的成本很高,則需要該字段進行相等性測試,並且還有其他字段有助於該類型的哈希值。即使某個字段從哈希中排除,它仍將用於比較。compare:如果為 true(默認值),則此字段包含在生成的相等和比較方法中(__eq__()、__gt__()等)。metadata:這可以是映射或無。 None 被視為空字典。此值包含在MappingProxyType()中以使其隻讀,並在Field對象上公開。數據類根本不使用它,而是作為第三方擴展機製提供的。多個third-parties 可以各自擁有自己的 key ,用作元數據中的命名空間。kw_only:如果為真,該字段將被標記為僅限關鍵字。這在計算生成的__init__()方法的參數時使用。
3.10 版中的新函數。
如果通過調用
field()指定了字段的默認值,則該字段的類屬性將被指定的default值替換。如果沒有提供default,那麽類屬性將被刪除。目的是在dataclass()裝飾器運行後,類屬性將全部包含字段的默認值,就像指定了默認值本身一樣。例如,之後:@dataclass class C: x: int y: int = field(repr=False) z: int = field(repr=False, default=10) t: int = 20類屬性
C.z將為10,類屬性C.t將為20,並且不會設置類屬性C.x和C.y。
相關用法
- Python dataclasses.asdict用法及代碼示例
- Python dataclasses.dataclass用法及代碼示例
- Python dataclasses.astuple用法及代碼示例
- Python dataclasses.KW_ONLY用法及代碼示例
- Python dataclasses.make_dataclass用法及代碼示例
- Python datetime astimezone()用法及代碼示例
- Python datetime.time.fromisoformat用法及代碼示例
- Python datetime timetuple()用法及代碼示例
- Python datetime.datetime.ctime用法及代碼示例
- Python datetime timetz()用法及代碼示例
- Python datetime.utcoffset()用法及代碼示例
- Python datetime.datetime.fromisoformat用法及代碼示例
- Python datetime.datetime.timetuple用法及代碼示例
- Python datetime isocalendar()用法及代碼示例
- Python date toordinal()用法及代碼示例
- Python datetime轉date用法及代碼示例
- Python date replace()用法及代碼示例
- Python datetime.tzinfo()用法及代碼示例
- Python date strftime()用法及代碼示例
- Python datetime date()用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 dataclasses.field。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
