如何实现自定义列表以便我可以覆盖的实现list[a:b]
?
提前致谢!
实施__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__
钩子。
定义__*item__()
自定义索引的方法。