python - 在函数中创建的命名管的适当返回类型是什么
问题描述
我正在尝试静态类型一些有效的代码,它看起来像这个代码片段:
from collections import namedtuple
from typing import Dict, Union, NamedTuple, Any
def read_attr(ident: str, attributes: Union[None, Dict[str, str]]):
tbl_attr = namedtuple('tbl', ['id', 'attr'])
if attributes:
return tbl_attr(id=ident, attr=attributes)
else:
return tbl_attr(id=ident, attr=None)
tbl = read_attr(ident='ID1', attributes={'foo': 'bar'})
print(tbl.attr['foo'])
namedtubletbl_attr
是在函数内创建的,应该由其他函数调用。我的问题是:如何->
正确输入返回值。从我的角度来看,有一些选项,例如-> object
or ofc `Any.
解决方案
将 namedtuple 定义移到函数定义之外,您可以将其用作返回类型。见下文
tbl_attr = namedtuple('tbl', ['id', 'attr'])
def read_attr(ident: str, attributes: Union[None, Dict[str, str]]) -> tbl_attr:
if attributes:
return tbl_attr(id=ident, attr=attributes)
else:
return tbl_attr(id=ident, attr=None)
tbl = read_attr(ident='ID1', attributes={'foo': 'bar'})
打印(tbl.attr['foo'])
推荐阅读
- html - 如何在绝对定位的 div 下方定位 div?
- c++ - 我需要帮助过滤文本文件
- ios - 将文件上传到 S3 时出现 Flutter SocketException
- firebase - firebase 部署陷入困境
- javascript - axios.post 不返回 400 并带有 setTimeout
- ansible - ansible - 失败了!=> {"msg": "'failed' 不是调试中的有效选项"}
- reactjs - 如何使用 MUI 的阴影?
- java - 如何在 Spring 中重置 LDAP 密码(忘记密码)
- python-3.x - 将 yaml 转储到变量中,而不是使用 ruamel.yaml 在标准输出中流式传输
- python-3.x - 无需迭代即可评估 DataFrame datetime.datetime 对象