正确的类型提示

2024-04-25 09:10:06 发布

您现在位置:Python中文网/ 问答频道 /正文

序列(如列表)的方法__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的问题?在

谢谢!在


Tags: 方法函数selfnone列表indexreturndef
1条回答
网友
1楼 · 发布于 2024-04-25 09:10:06

__getitem__()的正确类型提示是Union[Product, Sequence[Product, None, None]]。在

文档中唯一记录这一点的地方是data model page,它声明:“当用作表达式时,切片是相同类型的序列”。注意:类似序列的类型(如List)也应该起作用,请参见typing。在

进一步讨论:我希望在迭代时使用带有序列的切片时使用生成器,因为它们更节省内存。但现在对我来说很明显,这将导致经常不得不做:l_2 = list(l_1[2:]),这会很烦人。在

相关问题 更多 >