序列(如列表)的方法__getitem__()
可以返回单个项或一系列项。例如,给定以下函数装饰:
def __getitem__(self, index) -> Union[Product, Generator[Product, None, None]]:
return super(Products, self).__getitem__(index)
用法示例:
^{pr2}$我相信Union[Product, Generator[Product, None, None]]
是正确的,但是PyCharm认为这是不恰当的。我是误用了打字库,还是这是PyCharm的问题?在
谢谢!在
__getitem__()
的正确类型提示是Union[Product, Sequence[Product, None, None]]
。在文档中唯一记录这一点的地方是data model page,它声明:“当用作表达式时,切片是相同类型的序列”。注意:类似序列的类型(如List)也应该起作用,请参见typing。在
进一步讨论:我希望在迭代时使用带有序列的切片时使用生成器,因为它们更节省内存。但现在对我来说很明显,这将导致经常不得不做:
l_2 = list(l_1[2:])
,这会很烦人。在相关问题 更多 >
编程相关推荐