类型提示可以在python中定义返回类型,因此当函数返回namedtuple类型时,该如何定义它
def bar(func):
def decorator(*args, **kwargs):
return namedtuple('data', 'name user')(**func(*args, **kwargs))
return update_wrapper(decorator, func)
@bar
def info() -> NamedTuple:
return {'name': 'a1', 'user': 'b1'}
期望类型为'NamedTuple',改为使用Dict [str,str]
您知道,函数info()
返回Dict[str, str]
,但是装饰器@bar
对其进行了更改。现在函数info()
返回namedtuple对象,那么有没有办法通过python中的类型提示来指示函数info()
返回namedtupe对象?
答案 0 :(得分:0)
NamedTuple实例是通过collections.namedtuple()函数创建的。
由于您对键入namedtuple的元素感兴趣,因此可以创建一个自定义类型,该类型继承NamedType的类型化版本(如@jab所述),并在类型提示中使用它,如下所示。
from typing import NamedTuple
class CustomType(NamedTuple):
name: str
user: str
def info() -> CustomType:
return CustomType('a1', 'b1')