如何实现自定义列表,以便覆盖list[a:b]
的实现?
提前致谢!
答案 0 :(得分:5)
实施__getitem__
hook;如果是切片,则传入slice
object。
一个简单的版本可能是:
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__
和__delitem__
挂钩。
覆盖现有容器类型时,您还必须处理__getslice__
method;它已弃用,但Python 2类型仍然实现它。同样,对于切片分配和删除,还有相应的__setslice__
和__delslice__
挂钩。
答案 1 :(得分:0)
定义__*item__()
方法以自定义索引。