小编but*_*tla的帖子

在typing.NamedTuple上获取字段默认值的优雅方法

假设我的样子是typing.NamedTuple这样的:

class Bla(typing.NamedTuple):
    a: str
    b: int = 666
    c: str = 'blah'
Run Code Online (Sandbox Code Playgroud)

我知道我可以为Bla._field_types我提供字段名称到其类型的映射,并Bla._field_defaults为我提供字段名称到其默认值的映射。

我知道不应该使用任何前缀的规则_,但我知道命名元组并不总是这种情况。例如,_asdict()即使在旧namedtuple版本中collections,现在时也可以使用,它只是有下划线以避免潜在的名称冲突。

同时,还有,其工作原理与本例typing.get_type_hints类似:_field_types

>>> Bla._field_types
OrderedDict([('a', <class 'str'>), ('b', <class 'int'>), ('c', <class 'str'>)])
>>> typing.get_type_hints(Bla)
{'a': <class 'str'>, 'b': <class 'int'>, 'c': <class 'str'>}
Run Code Online (Sandbox Code Playgroud)

但这是一个更通用的函数,它比typing.NamedTuples 可以做更多的事情。

那么有人知道不使用的原因吗_field_defaults

为了提供一些上下文,我需要一段动态代码,该代码继承不同的类typing.NamedTuple并根据环境中的值实例化它们。

python

6
推荐指数
1
解决办法
3248
查看次数

标签 统计

python ×1