2

如何实现自定义列表以便我可以覆盖的实现list[a:b]

提前致谢!

4

2 回答 2

5

实施__getitem__钩子;如果是切片,则传入一个slice对象

一个简单的版本可能是:

def __getitem__(self, index):
    if isinstance(index, slice):
        return [self[i] for i in range(*slice.indices(len(self)))]
    return self._internal_sequence[index]

请注意,对于切片分配和切片删除,您还必须实现__setitem__and__delitem__钩子。

覆盖现有容器类型时,您还必须处理__getslice__方法;它已被弃用,但 Python 2 类型仍然实现它。同样,切片分配和删除也有相应的__setslice____delslice__钩子。

于 2013-07-15T11:04:27.660 回答
0

定义__*item__()自定义索引的方法。

于 2013-07-15T11:04:14.063 回答