gpt4 book ai didi

python - __getitem__ 返回值的类型注解是什么?

转载 作者:行者123 更新时间:2023-12-05 01:53:09 25 4
gpt4 key购买 nike

我正在通过继承 torch.utils.data.Dataset 创建一个数据集类并遇到了以下问题。

与返回固定类型值的先前函数不同,__getitem__没有。例如,

class MyExample:
def __init__(self, some_list: list[int]):
self.some_list = some_list

def __getitem__(self, index):
return self.some_list[index]

MyExample[<index>]将返回 int , 而 MyExample[<slice>]将返回 slice of int . VScode intellisense 自动写T_co对于它的类型注释,但我不明白这是什么意思。

  • 我应该如何注释这样的函数?
  • 我需要学习什么才能理解这样的注释?

最佳答案

为此,您可以使用 Union 作为函数和重载的实际注解,让您的类型检查器知道只有在给出切片时才返回切片,而在仅给出 int 时才返回 int。

from typing import overload, Union

class MyExample:
def __init__(self, some_list: list[int]):
self.some_list = some_list

@overload
def __getitem__(self, index: int) -> int: ...

@overload
def __getitem__(self, index: slice) -> list[int]: ...

def __getitem__(self, index: Union[slice, int]) -> Union[list[int], int]: # Or Slice[int] if that's a thing
return self.some_list[index]

如果您的示例不仅针对整数列表而且针对一般列表,您可以更改为通用类型。

关于python - __getitem__ 返回值的类型注解是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71182977/

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