首页 > 解决方案 > 如何在 python 中输入提示名称元组?

问题描述

类型提示在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()return Dict[str, str],但装饰器@bar改变了它。现在函数info()返回一个namedtuple对象,那么有没有办法通过python中的类型提示来指示函数info()返回namedtupe对象?

标签: pythonpython-3.xtype-hinting

解决方案


NamedTuple 实例是通过collections.namedtuple()函数创建的。

由于您对命名元组的类型元素感兴趣,您可以创建一个自定义类型来继承 NamedType 的类型化版本(如@jab 所述)并在类型提示中使用它,如下所示。

from typing import NamedTuple

class CustomType(NamedTuple):
    name: str
    user: str

def info() -> CustomType:
    return CustomType('a1', 'b1')

推荐阅读