python - typing.NewType 语法是如何工作的?
问题描述
Python 文档显示了 NewType 的用法,如下所示:
import typing
foo = typing.NewType('foo', int)
some_id = foo(524313)
我不明白语法在做什么。这与此有何不同:
import typing
bar = typing.NewType('foo', int)
some_id = bar(524313)
上面源代码中 'foo' != 'bar' 的后果是什么?
或者,可能更糟:
import typing
bar = typing.NewType('foo', int)
some_id = foo(524313)
解决方案
两种不同的目的。NewType 的参数用于描述用于诊断目的的类型,例如错误消息。它无法知道您实际存储类型的名称。返回值是实际的类对象。虽然可能,但混合它们通常会导致流泪。
您的第三个示例将失败,因为没有foo
.
这个想法是,稍后,您可以强制执行类型检查:
some_id : foo = bar(524313)
这会触发诊断。
推荐阅读
- pug - 当 SELECT 元素随 PUG 更改时更改页面内容
- vba - 正则表达式:匹配所有内容,但不匹配某个字符串,包括白色 sapce(正则表达式,除了 VBA Visual Basic)
- javascript - 将帖子重定向到其他页面
- java - Android Firebase 数据库不断更新价值并最终导致应用崩溃
- sql-server - Django filter() 比完整查询花费更长的时间
- python - Pandas Cut 中的分箱
- amazon-web-services - 允许来自其他帐户的 Cloudtrail 使用我的 KMS-CMK
- java - 如何从 int 方法打印字符串而不返回 int?
- wix - OutputName 中的 WiX 安装程序语言环境
- android - Adobe Experience SDK getTrackingIdentifier