如何使用方括号调用Literal类型?(如Literal["Test1"])
关于Literal用方括号调用的疑问解答
先看这段代码:
Literal['r', 'rb', 'w', 'wb']
你疑惑为啥不是实例却能用方括号调用?其实这是Python类型系统里的特殊语法——Literal本质是个支持类级方括号索引的类型构造器,靠的是__class_getitem__方法。
普通类里的__getitem__是给实例用的,比如my_dict[key],但__class_getitem__是给类本身用的,Python 3.7之后引入的这个方法,专门让类能直接用类名[...]的语法,返回对应的泛型类型对象,用来做类型注解。
在typing模块里,Literal、List、Dict这些常用的类型工具,都是靠这个机制实现的。当你写Literal['r', ...]时,实际上是调用了Literal类的__class_getitem__方法,把传入的字面量参数处理成对应的字面量类型。
内容的提问来源于stack exchange,提问作者psaw.mora
相关产品推荐
相关产品推荐

