当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python typing.Type用法及代码示例


用法:

class typing.Type(Generic[CT_co])

使用 C 注释的变量可以接受类型为 C 的值。相反,使用 Type[C] 注释的变量可以接受本身就是类的值 - 具体来说,它将接受 Cclass object 。例如:

a = 3         # Has type 'int'
b = int       # Has type 'Type[int]'
c = type(a)   # Also has type 'Type[int]'

请注意,Type[C] 是协变的:

class User: ...
class BasicUser(User): ...
class ProUser(User): ...
class TeamUser(User): ...

# Accepts User, BasicUser, ProUser, TeamUser, ...
def make_new_user(user_class: Type[User]) -> User:
    # ...
    return user_class()

事实是Type[C]是协变的意味着所有的子类C应该实现相同的构造函数签名和类方法签名C.类型检查器应标记违反此规则的行为,但还应允许子类中的构造函数调用与指定基类中的构造函数调用匹配。类型检查器如何处理这种特殊情况可能会在未来的修订中发生变化PEP 484.

Type 的唯一合法参数是类、Any、类型变量和任何这些类型的联合。例如:

def new_non_team_user(user_class: Type[BasicUser | ProUser]): ...

Type[Any] 等价于 Type ,后者又等价于 type ,它是 Python 元类层次结构的根。

版本 3.5.2 中的新函数。

自 3.9 版后已弃用:type现在支持[].看PEP 585通用别名类型.

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 typing.Type。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。