Python 如何重写列表[1:10]中的[]运算符?
如何实现自定义列表,以便覆盖Python 如何重写列表[1:10]中的[]运算符?,python,list,Python,List,如何实现自定义列表,以便覆盖list[a:b]的实现 提前谢谢 定义自定义索引的方法。实现;如果是切片,则传入一个 一个简单的版本可以是: def __getitem__(self, index): if isinstance(index, slice): return [self[i] for i in range(*slice.indices(len(self)))] return self._internal_sequence[index] 请注意,对于片
list[a:b]
的实现
提前谢谢 定义自定义索引的方法。实现;如果是切片,则传入一个
一个简单的版本可以是:
def __getitem__(self, index):
if isinstance(index, slice):
return [self[i] for i in range(*slice.indices(len(self)))]
return self._internal_sequence[index]
请注意,对于片分配和片删除,还必须实现和挂钩
重写现有容器类型时,还必须处理;它已被弃用,但Python 2类型仍然实现它。同样,切片分配和删除也有相应的和钩子。我认为您的问题在于不知道它的名称。你需要一个索引器。见.相关链接: