首页 > 解决方案 > 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)

标签: pythontype-hintingtyping

解决方案


两种不同的目的。NewType 的参数用于描述用于诊断目的的类型,例如错误消息。它无法知道您实际存储类型的名称。返回值是实际的类对象。虽然可能,但混合它们通常会导致流泪。

您的第三个示例将失败,因为没有foo.

这个想法是,稍后,您可以强制执行类型检查:

some_id : foo = bar(524313)

这会触发诊断。


推荐阅读