索引与切片运算符重载

索引和切片运算符的重载
  方法名 运算符和表达式 说明
  __getitem__(self, i) x = self[i] 索引/切片取值
  __setitem__(self, i, val) self[i] = val 索引/切片赋值
  __delitem__(self, i) del self[i] 删除索引/切片

作用:
让自定义的类的对象能够支持索引和切片操作

class MyList:
    def __init__(self, iterable=()):
        self.data = list(iterable)

    def __getitem__(self, i):      #索引/切片取值  且传入的i可以能对象。传入的是slice对象
        return self.data[i]

    def __setitem__(self, i, val):
        self.data[i] = val

    def __delitem__(self, i):
        del self.data[i]

L1 = MyList([1,2,3,4,5,6,7])
print(L1[3])
L1.__setitem__(3,5)
L1[2] = 10
print(L1)
del L1[0]
print(L1)

输出结果:
4
MyList([1, 2, 10, 5, 5, 6, 7])
MyList([2, 10, 5, 5, 6, 7])

slice 函数:
  作用:
    用于创建一个slice切片对象,此对于用于切片操作的传值
格式:
  slice(start=None, stop=None, step=None)
slice对象的属性
  s.start 切片的起始值, 默认为None
  s.stop 切片的终止值, 默认为None
  s.step 切片的步长, 默认为None

原文地址:https://www.cnblogs.com/zengsf/p/9557403.html