我正在嘗試靜態(tài)類型一些有效的代碼,它看起來像這個代碼片段: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是在函數(shù)內(nèi)創(chuàng)建的,應(yīng)該由其他函數(shù)調(diào)用。我的問題是:如何->正確輸入返回值。從我的角度來看,有一些選項,例如-> objector ofc `Any.
1 回答

富國滬深
TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊
將 namedtuple 定義移到函數(shù)定義之外,您可以將其用作返回類型。見下文
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
提交
取消