索引与切片运算符重载

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

时间: 2024-08-29 19:53:31

索引与切片运算符重载的相关文章

Python面向对象运算符重载

运算符重载的概念如下: 运算符重载让类拦截常规的Python运算: 类可重载所有Python表达式运算符: 类也可重载打印.函数调用.属性点号运算等内置运算: 重载是类实例的行为想内置类型: 重载是通过提供特殊名称的类方法来实现的: 常见的运算符重载方法 方法 重载 调用 __init__ 构造函数 对象建立:X = Class(args) __del__ 解析函数 X对象收回 __add__ 运算符+ 如果没有__iadd__,X+Y,X+=Y __or__ 运算符或 如果没有__ior__

7Python全栈之路系列之面向对象运算符重载

Python全栈之路系列之面向对象运算符重载 运算符重载的概念如下: 运算符重载让类拦截常规的Python运算: 类可重载所有Python表达式运算符: 类也可重载打印.函数调用.属性点号运算等内置运算: 重载是类实例的行为想内置类型: 重载是通过提供特殊名称的类方法来实现的: 常见的运算符重载方法 方法 重载 调用 __init__ 构造函数 对象建立:X = Class(args) __del__ 解析函数 X对象收回 __add__ 运算符+ 如果没有__iadd__,X+Y,X+=Y _

C#中的运算符重载

C# 允许用户自定义类型通过使用 operator 关键字定义静态成员函数来重载运算符. 注意: 必须用public修饰,必须是类的静态的方法. 重载相等运算符(==)时,还必须重载不相等运算(!=). < 和 > 运算符以及 <= 和 >= 运算符也必须成对重载. 可以重载的运算符: 可以重载的一元运算符:+.-.!.~.++.--.true 和 false 可以重载的二进制运算符:+, -, *, /, %, &, |, ^, <<, >> 可以

python运算符重载2

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

《Inside C#》笔记(十一) 运算符重载

运算符重载与之前的索引器类似,目的是为了让语言本身使用起来更方便直接,也是一种语法糖. 一 运算符重载(Operator Overloading) 运算符重载的存在,使得现有的各种运算符可以被重新定义并用来操作用户自定义的数据类型.运算符重载只是语法糖,因为它的本质实际上还是对方法的调用,并没有为语言本身增加新特性. a) 运算符重载的写法 public static <返回值>operator<运算符> (<参数1>,<参数2>-) 还有一些规则: 必须用

Python——运算符重载(1)

运算符重载 关键概念: 1.运算符重载让类拦截常规的Python运算. 2.类可重载所有的Python表达式运算符. 3.类也可重载打印.函数调用.属性点号运算等内置运算. 4.重载使类实例的行为像内置类型. 5.重载是通过特殊名称的类方法来实现的. 运算符重载只是意味着在类方法中拦截内置的操作--当类的实例出现在内置操作中,Python自动调用你的方法,并且你的方法的返回值变成了相应操作的结果. =================================================

Python 3 之 运算符重载详解

基础知识 实际上,"运算符重载"只是意味着在类方法中拦截内置的操作--当类的实例出现在内置操作中,Python自动调用你的方法,并且你的方法的返回值变成了相应操作的结果.以下是对重载的关键概念的复习: 运算符重载让类拦截常规的Python运算. 类可重载所有Python表达式运算符 类可以重载打印.函数调用.属性点号运算等内置运算 重载使类实例的行为像内置类型. 重载是通过特殊名称的类方法来实现的. 换句话说,当类中提供了某个特殊名称的方法,在该类的实例出现在它们相关的表达式时,Pyt

Python 运算符重载

构造函数与表达式: __init__, __sub__ 常见运算符重载方法 method reload call __init__ 构造函数 对象创建: X = Class(args) __del__ 析构函数 X对象收回 __add__ 云算法+ 如果没有_iadd_, X+Y, X+=Y __or__ 运算符| 如果没有_ior_,X|Y, X|=Y _repr__, __str__ 打印,转换 print(X),repr(X),str(X) __call__ 函数调用 X(*args, *

C#高级编程四十天----运算符重载

运算符重载 所谓的运算符重载是指允许用户使用用户定义的类型编写表达式的能力. 例如,通常需要编写类似与以下内容的代码,入江两个数字相加,很明显,sum是两个数字之和. int i=5,j=4; int sum = i+j; 如果可以使用代表附属的用户定义的类型来编写相同类型的表达式,那当然是最好不过的了: Complex i=5; Complex sum=i+j; 运算符重载允许为用户定义的类型重载(即指明明确的含义)诸如"+"这样的运算符.如果不进行重载,则用户需要编写以下代码: C