重写自定义对象上的切片(Python)

2024-10-01 09:32:59 发布

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

我有一个简单的类,它以一个对象列表作为输入,我想确保可以对该操作执行切片。在

class MyClass(AbstractLocationClass):
    def __init__(locations=None, **kwargs):
       if locations is None:
           locations = []
       self._locations = locations
       #... do other stuff with kwargs..

我希望允许用户执行以下操作:

^{pr2}$

我知道我必须重写__getitem__,但我不确定的是如何处理所有的符号类型,如obj[0]、obj[1:2],等等。。。在

有人能告诉我们如何正确地实现这个功能吗。在


Tags: 对象selfnoneobj列表ifinitis
1条回答
网友
1楼 · 发布于 2024-10-01 09:32:59

我发现我需要检查索引是否属于slice类型

#                                   
def __getitem__(self, index):
    """slicing"""
    if len(self) == 0:
        return []

    if isinstance(index, slice):
        return self._locations[index]
    else:
        if index <= len(self) -1:
            return self._locatios[index]
        else:
            raise ValueError("Invalid index")

相关问题 更多 >