如果传递给 NamedTuple 字段的值与声明的类型不匹配,是否有一个简洁的解决方案来引发错误?
在这个例子中,我故意传递了 page_count str 而不是 int。该脚本将继续向前传递错误值。
(我知道 linter 会引起您对错误的注意,但我在 NamedTuple 字段由从配置文件获取值的函数填充的情况下遇到了这种情况)。
我可以用条件检查每个值的类型,但它看起来并不干净。有任何想法吗?谢谢。
from typing import NamedTuple
class ParserParams(NamedTuple):
api_url: str
page_count: int
timeout: float
parser_params = ParserParams(
api_url='some_url',
page_count='3',
timeout=10.0,
)
根据设计,Python 是一种动态类型语言,这意味着可以将任何值分配给任何变量。仅支持输入作为提示 - 错误可能会在您的 IDE 中突出显示,但它们不会强制执行任何操作。
这意味着如果您需要类型检查,您必须自己实现。从好的方面来说,这可能是自动化的,即仅实施一次,而不是针对每个字段单独实施。然而,
NamedTuple
不提供这种开箱即用的检查。