gpt4 book ai didi

python - __getitem__() 的正确类型提示

转载 作者:太空宇宙 更新时间:2023-11-04 02:38:44 25 4
gpt4 key购买 nike

序列(例如列表)的方法 __getitem__() 可以返回单个项目或项目序列。例如,给定下面的函数装饰:

def __getitem__(self, index) -> Union[Product, Generator[Product, None, None]]:
return super(Products, self).__getitem__(index)

示例用法:

i1 = 34
for product in products[i1:]:
print(product.name)

我相信 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:]),这会很烦人。

关于python - __getitem__() 的正确类型提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com