python - 如何键入提示 getter 只允许 dict 键?
问题描述
我想知道如何使这个吸气剂更加类型安全:
VALUES = {
'1': 'One',
'2': 'Two',
'3': 'Three'
}
def get(key : str) -> str:
return VALUES[key]
而不是str
我想要的类型keyof VALUES
和type(VALUES[key])
类型。
get('4')
然后应该抛出一个无效类型警告,因为这个键不存在。不确定这是否可以使用 Python,因为我正确地生活在 TypeScript 仙境中......:-)
TypeScript 应该看起来像这样:
get<K extends keyof VALUES>(key : K): typeof K
{
return VALUES[key];
}
解决方案
一般情况下您不能这样做。但是,您可以在这种特殊情况下使用以下命令完成您想要的typing.Literal
:
import typing
def get(key: typing.Literal['1','2','3']) -> str:
return VALUES[key]
推荐阅读
- amazon-web-services - 如何将 AWS Just In Time Provisioning (JITP) 嵌入您的微控制器(运行 Freertos)
- solr - “如何解决 Solr 7 中的‘服务器错误’”
- iis - 在具有特定域名的 IIS 中使用子应用程序
- xml - 杨模型验证错误。元素不允许在任何地方,预期的结束标签
- python - Tesseract 手写数字失败
- excel - 单个营业月的两个日期之间的差异
- javascript - 无法从嵌套 JSON 获取值到下拉列表
- html - 为什么在页面加载时无法使用 ajax 获取 json 内容
- aws-lambda - 将相同的函数部署到 ASW Lambda 上的不同端点
- powershell - 需要使用 Groovy 在 SoapUI 中调用 PowerShell 文件