用法:
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。