用法:
class typing.Type(Generic[CT_co])
使用
C
注释的变量可以接受类型为C
的值。相反,使用Type[C]
注释的变量可以接受本身就是类的值 - 具体来说,它将接受C
的class 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 中的新函数。
相关用法
- Python typing.TypedDict.__optional_keys__用法及代码示例
- Python typing.TypedDict.__total__用法及代码示例
- Python typing.TypeVar用法及代码示例
- Python typing.TypedDict用法及代码示例
- Python typing.TypeGuard用法及代码示例
- Python typing.TypeAlias用法及代码示例
- Python typing.TYPE_CHECKING用法及代码示例
- Python typing.get_type_hints用法及代码示例
- Python typing.Concatenate用法及代码示例
- Python typing.Optional用法及代码示例
- Python typing.Final用法及代码示例
- Python typing.Protocol用法及代码示例
- Python typing.NoReturn用法及代码示例
- Python typing.is_typeddict用法及代码示例
- Python typing.AsyncGenerator用法及代码示例
- Python typing.final用法及代码示例
- Python typing.ClassVar用法及代码示例
- Python typing.ParamSpec用法及代码示例
- Python typing.Literal用法及代码示例
- Python typing.overload用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 typing.Type。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。