Python中如何实现类似typedef的功能,定义非类的自定义类型?
Python中实现类似typedef的自定义类型别名方案
你要的这种复合类型别名不需要定义类,直接赋值即可实现和C语言typedef完全一致的效果,不同Python版本的写法如下:
Python 3.10+ 最简写法
3.10版本引入了更简洁的联合类型运算符|,同时原生容器默认支持泛型标注,写法如下:
RecordType = dict[int | str, set[str]]
Python 3.9 版本写法
3.9版本支持原生容器泛型,但还没有联合类型运算符,需要导入Union:
from typing import Union RecordType = dict[Union[int, str], set[str]]
兼容Python 3.5~3.8版本
3.8及更低版本的原生容器不支持泛型标注,需要从typing模块导入对应泛型容器:
from typing import Dict, Union, Set RecordType = Dict[Union[int, str], Set[str]]
注意事项
- 上述写法定义的
RecordType可以直接在后续类型标注里使用,所有主流静态类型检查工具(mypy、pyright等)都能正常识别校验 - 类型别名仅用于静态类型检查阶段,Python运行时不会做强制类型校验,如果需要运行时校验能力可以搭配pydantic等第三方库使用
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

