在函数中创建的命名管的适当返回类型是什么

我正在尝试静态类型一些有效的代码,它看起来像这个代码片段:


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是在函数内创建的,应该由其他函数调用。我的问题是:如何->正确输入返回值。从我的角度来看,有一些选项,例如-> objector ofc `Any.


慕少森
浏览 70回答 1
1回答

富国沪深

将 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'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python