如何在python中键入提示nametuple?

时间:2019-06-04 03:32:54

标签: python python-3.x type-hinting

类型提示可以在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对象?

1 个答案:

答案 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')