zoukankan      html  css  js  c++  java
  • 索引与切片运算符重载

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

  • 相关阅读:
    2018/12/06 L1-031 到底是不是太胖了 Java
    2018/12/06 L1-030 一帮一 Java
    2018/12/06 L1-029 是不是太胖了 Java
    .NET Framework 类库命名空间
    .NET获取根目录
    ddd领域驱动设计
    垃圾回收
    rest api
    数据库ACID
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/zengsf/p/9557403.html
Copyright © 2011-2022 走看看