我正在尝试静态类型一些有效的代码,它看起来像这个代码片段:from collections import namedtuplefrom typing import Dict, Union, NamedTuple, Anydef 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.
                    
                    
                1 回答
 
                    
                    
                            富国沪深
                            
                                
                            
                        
                        
                                                
                    TA贡献1790条经验 获得超9个赞
将 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'])
添加回答
举报
0/150
	提交
		取消
	