索引与切片运算符重载

Posted zengsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引与切片运算符重载相关的知识,希望对你有一定的参考价值。

索引和切片运算符的重载
  方法名 运算符和表达式 说明
  __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














以上是关于索引与切片运算符重载的主要内容,如果未能解决你的问题,请参考以下文章

乐哥学AI_Python:Numpy索引,切片,常用函数

Python切片中的误区与高级用法

结束索引为 0 的切片运算符 [重复]

Powershell如何重载数组索引运算符?

类型匹配没有可行的重载运算符

python——入门系列索引与切片