栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何访问type.generic的类型参数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何访问type.generic的类型参数?

Python 3.8更新

从Python3.8开始,有

typing.get_args

print( get_args( List[int] ) ) # (<class 'int'>,)

PEP-560还提供了

__orig_bases__[n]
,它允许我们使用第
n 个通用基的参数:

from typing import TypeVar, Generic, get_argsT = TypeVar( "T" )class base( Generic[T] ):    passclass Derived( base[int] ):    passprint( get_args( Derived.__orig_bases__[0] ) ) # (<class 'int'>,)

旧答案

可能性1

从Python 3.6开始。有一个公共

__args__
和(
__parameters__
)字段。例如:

print( typing.List[int].__args__ )

这包含通用参数(即

int
),而
__parameters__
包含通用本身(即
~T
)。

可能性2

使用Typeing_inspect.getargs

使用哪个

typing
遵循PEP8。PEP8和
typing
由Guido
van Rossum合着。前后双下划线定义为: “位于 用户控制的名称空间中的 “魔术”对象或属性”

这些声音也被在线注释;从官方存储库中键入,我们可以看到:*

__args__
是下标中使用的所有参数的元组,例如
Dict[T, int].__args__ == (T, int)
”。

但是,作者还指出:*
“类型输入模块具有临时状态,因此它没有被高标准的向后兼容性所覆盖(尽管我们尝试保持尽可能多的状态),这对于(尚未记录)尤其如此。
dunder属性,例如

__union_params__
。如果您想在运行时上下文中使用键入类型,那么您可能会对
typing_inspect
项目感兴趣(其中一部分可能会在以后进行键入)。”

我一般说来,无论您做什么,

typing
都需要暂时保持最新。如果需要向前兼容的更改,建议您编写自己的注释类。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633707.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号