Python——运算符重载

  • 1.加法运算符重载和减法运算符重载
  • 2.`__str__()`方法重载和`__ge__()`方法重载
  • 3.索引的切片重载

运算符重载指的是将运算符与类方法关联起来,每个运算符对应一个指定的内置方法。

Python通过重写一些内置方法,实现了运算符的重载功能。

1.加法运算符重载和减法运算符重载

  • 加法运算符重载——__add__()方法
  • 减法运算符重载——__sub__()方法

例 7-16 加法运算符重载和减法运算符重载的实现:

#ex0716.py  加法运算符重载和减法运算符重载的实现
class Computing:def __init__(self,value):self.value = valuedef __add__(self, other):lst = []for i in self.value:lst.append(i+other)#在列表末尾添加新的对象return lstdef __sub__(self, other):lst = []for i in self.value:lst.append(i-other)return lstc = Computing([-1,3,4,5])
print("+运算符重载后的列表",c+2)
print("-运算符重载后的列表",c-2)

运行结果:

2.__str__()方法重载和__ge__()方法重载

  • 重载__str__()__repr__()方法可以将对象转换为字符串的形式,在执行print()、str()、repr()等方法以及交互模式下直接打印对象时,会调用__str__()__repr__()方法。__str__()__repr__()方法的区别是,只有print()、str()方法可以调用__str__()方法转换,而 __repr__()方法在多种操作下都能将对象转换为自定义的字符串形式。
  • __ge__()方法用于重载>=运算符

例 7-17 __str__()方法重载和 __ge__()方法重载的实现

#ex0717.py  __str__()方法重载和 __ge__()方法重载的实现
class Student:def __init__(self,name,age):self.name = nameself.age = agedef __str__(self):  #重载__str__()return "{}{}".format(self.name,self.age)def __ge__(self, obj):    #重载__ge__()if self.age >= obj.age:return Truereturn Falses1 = Student("Rose",20)
s2 = Student("John",19)
print("学生s1:",s1)
print("学生s2:",s2)
print("s1 >= s2 大小比较结果:",s1 >= s2)

运行结果:

3.索引的切片重载

  1. __getitem__()方法
    用于索引、切片操作,在对象执行索引、切片或者 for 迭代操作时,会自动调用该方法。
  2. __setitem__()方法
    索引赋值,在通过赋值语句给索引或者切片赋值时,可调用__setitem__()方法实现对序列对象的修改。
  3. __delitem__()方法
    当使用 del 关键字删除对象时,实质上会调用__delitem__()方法实现删除操作。

例 7-18 __getitem__()方法、__setitem__()方法、__delitem__()方法的实现:

#ex0718.py  __getitem__()方法、__setitem__()方法、__delitem__()方法的实现
class SelectData:def __init__(self,data):self.data = data[:]def __getitem__(self, index):return self.data[index]def __setitem__(self, index, value):self.data[index] = valuedef __delitem__(self, index):del self.data[index]#在下面测试
x = SelectData([12,33,23,"ab",False])
print(x)    #x的地址
print(x[:]) #切片,x中的全部元素
print(x[2]) #切片,x中的下标为2元素
print(x[2:])    #切片,x中从下标为2起的所有元素
x[4] = 100  #索引赋值,替换x中的下标为4的元素
print(x[:])
del(x[3])   #删除x中的下标为3的元素
for num in x:   #遍历对象x中的元素print(num,end="")

运行结果:

Python——运算符重载相关推荐

  1. python叫什么-什么叫Python运算符重载

    什么叫Python运算符重载 Python中每个数据类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于 ...

  2. python代码案例详解-Python运算符重载详解及实例代码

    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...

  3. 一篇文章带你了解Python运算符重载

    回复"python"即可获赠从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 您可以根据所使用的操作数来更改Python中运算符的含义.这种做法称为运算符重载, ...

  4. [转载] python 运算符重载有什么用_Python运算符重载用法实例分析

    参考链接: Python运算符重载 本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调 ...

  5. python 运算符重载_零基础小白Python入门必看:面向对象之典型魔术方法

    魔术方法 查看类的魔术方法 class A: passdir(A) # 可以得到类所有公有成员复制代码 输出结果如下 ['__class__', '__delattr__', '__dict__', ...

  6. python 运算符重载_Python3面向对象-运算符重载

    1:运算符重载介绍 运算符重载,就是在某个类的方法中,拦截其内置的操作(比如:+,-,*,/,比较,属性访问,等等),使其实例的行为接近内置类型. 当类的实例出现在内置操作中时(比如:两个实例相加 + ...

  7. python 运算符重载_《fluent python》第 13 章 正确重载运算符

    引言 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人选择,因为我见过太多 C++ 程序员滥用它--James Gosling(Java 之父) ps: 运算符重载它不香吗 写在 ...

  8. python 运算符重载_Python中类的运算符重载

    这篇文章仅仅是总结性质的,待以后有时间的时候会针对比较难理解的部分补充一些例子. 构造和析构 __init__ __del__ 函数调用 __call__ 打印操作 __str__ __repr__ ...

  9. python 运算符重载_Python 炫技操作:模块重载的五种方法

    点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货!明哥原创的200页<PyCharm 中文指南> 震撼发布 系列文 ...

最新文章

  1. Linux的watch命令--实时监测命令的运行结果
  2. Windows Live Messenger  正式版已经发布
  3. UVA 10305 Ordering Tasks (拓扑排序)
  4. win2003 IIS6配置PHP 5.3.3(fastCGI方式+eAccelerator)+ASP.NET 4.0(MVC3)
  5. 如何看待和选择基础设施软件
  6. 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
  7. phpstorm 2017.1 激活
  8. .NET Framework(一)
  9. python regularexpress1
  10. 集合的相关概念(开闭、有界无界、内点边界点等)
  11. 南大软院大神养成计划--CSS网页布局
  12. C++ 监视检测键盘输入 字符 并打印
  13. MySQL之高性能的索引策略(索引优化)
  14. 对LBP与HOG的理解
  15. java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
  16. 【KITTI】KITTI数据集简介(三) — 图像数据image_2
  17. python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
  18. windows系统各个端口作用
  19. Python安装包报错ERROR: Could not find a version that satisfies the requirement XXX解决方法
  20. 写作系列之: UAV领域概述的参考文献集合

热门文章

  1. 做java还是C语言
  2. iOS App 上架流程图文教学
  3. 图形学:opengl下实现三角形质心坐标进行填充
  4. ros kinetic-moveit驱动ur3机械臂------控制真实机械臂并且能动
  5. QString去掉前面字符串
  6. cv2.imshow显示空白
  7. 解压大型游戏(文件)时C盘空间不够?教你一个解压缩的小技巧
  8. 射频电路与天线(华南理工金品公开课)学习笔记--绪论
  9. Microsoft Solitaire Collection拦截广告
  10. Forword与Redirect的区别是什么