代码之家  ›  专栏  ›  技术社区  ›  nerdfever.com

typing.NewType语法是如何工作的?

  •  0
  • nerdfever.com  · 技术社区  · 3 年前

    Python文档显示NewType的用法如下:

    import typing
    
    foo = typing.NewType('foo', int)
    some_id = foo(524313)
    

    我不明白语法到底在做什么。与此有何不同:

    import typing
    
    bar = typing.NewType('foo', int)
    some_id = bar(524313)
    

    import typing
    
    bar = typing.NewType('foo', int)
    some_id = foo(524313)
    
    1 回复  |  直到 3 年前
        1
  •  2
  •   Tim Roberts    3 年前

    两个不同的目的。NewType的参数用于描述用于诊断目的的类型,如错误消息。它不知道您实际将类型存储在哪个名称中。返回值是实际的类对象。如果可能的话,把它们混合在一起,通常会导致流泪。

    你的第三个例子将失败,因为没有 foo

    其思想是,以后可以强制执行类型检查:

    some_id : foo = bar(524313)