typing模块提供了一些方便的特性,可以更好地提高可读性和对类型化代码正确性的信心。在
其中一个最好的特性是,您可以编写类似下面的代码来描述具有指定元素类型的输入字典。在
def myFun(inputDict:Dict[str, int]): pass
现在我想知道,这可以“扩展”到自定义类型吗?自定义类型(类似于容器)能否以正式的方式提供索引,以告诉潜在的类型检查器内容必须是特定类型的?在
例如collections.Counter
类?-当我真的需要一个计数器时,上面的约束不起作用,因为字典不提供加法运算符,而counters提供加法运算符。在
我可以做一些类似的事情:
^{pr2}$但后来我就失去了柜台上储存什么的信息。-在这里使用TypeVar
是正确的方法吗?在
CounterTy = typing.TypeVar("CounterTy", collections.Counter)
def myFun(inputDict:CounterTy[str]): pass
我不清楚Typevar
是否应该这样工作。编辑:为了清楚起见,上面的代码不起作用,TypeVar
行出现错误。在
如果您正在编写自己的容器类型,并希望以
typing.Dict
和其他类型相同的方式对其进行参数化,则应使用typing.Generic
作为基础之一(参数为TypeVar
):相关问题 更多 >
编程相关推荐