用法:
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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。