Python——运算符重载
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.索引的切片重载
__getitem__()
方法
用于索引、切片操作,在对象执行索引、切片或者 for 迭代操作时,会自动调用该方法。__setitem__()
方法
索引赋值,在通过赋值语句给索引或者切片赋值时,可调用__setitem__()
方法实现对序列对象的修改。__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——运算符重载相关推荐
- python叫什么-什么叫Python运算符重载
什么叫Python运算符重载 Python中每个数据类型都有其独特的操作方法,例如列表类型支持直接做加法操作实现添加元素的功能,字符串类型支持直接做加法实现字符串的拼接功能,也就是说,同样的运算符对于 ...
- python代码案例详解-Python运算符重载详解及实例代码
Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同.鉴于它的特殊性,今天就来讨论一下Python运算符重载. Python语言本身提供了 ...
- 一篇文章带你了解Python运算符重载
回复"python"即可获赠从入门到进阶共10本电子书 今 日 鸡 汤 不堪玄鬓影,来对白头吟. 您可以根据所使用的操作数来更改Python中运算符的含义.这种做法称为运算符重载, ...
- [转载] python 运算符重载有什么用_Python运算符重载用法实例分析
参考链接: Python运算符重载 本文实例讲述了Python运算符重载用法.分享给大家供大家参考.具体如下: 在Python语言中提供了类似于C++的运算符重在功能: 一下为Python运算符重在调 ...
- python 运算符重载_零基础小白Python入门必看:面向对象之典型魔术方法
魔术方法 查看类的魔术方法 class A: passdir(A) # 可以得到类所有公有成员复制代码 输出结果如下 ['__class__', '__delattr__', '__dict__', ...
- python 运算符重载_Python3面向对象-运算符重载
1:运算符重载介绍 运算符重载,就是在某个类的方法中,拦截其内置的操作(比如:+,-,*,/,比较,属性访问,等等),使其实例的行为接近内置类型. 当类的实例出现在内置操作中时(比如:两个实例相加 + ...
- python 运算符重载_《fluent python》第 13 章 正确重载运算符
引言 有些事情让我不安,比如运算符重载.我决定不支持运算符重载,这完全是个人选择,因为我见过太多 C++ 程序员滥用它--James Gosling(Java 之父) ps: 运算符重载它不香吗 写在 ...
- python 运算符重载_Python中类的运算符重载
这篇文章仅仅是总结性质的,待以后有时间的时候会针对比较难理解的部分补充一些例子. 构造和析构 __init__ __del__ 函数调用 __call__ 打印操作 __str__ __repr__ ...
- python 运算符重载_Python 炫技操作:模块重载的五种方法
点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货!明哥原创的200页<PyCharm 中文指南> 震撼发布 系列文 ...
最新文章
- Linux的watch命令--实时监测命令的运行结果
- Windows Live Messenger 正式版已经发布
- UVA 10305 Ordering Tasks (拓扑排序)
- win2003 IIS6配置PHP 5.3.3(fastCGI方式+eAccelerator)+ASP.NET 4.0(MVC3)
- 如何看待和选择基础设施软件
- 通过Java得到的时间与操作系统时间不一致,如何修改Java虚拟机时间?
- phpstorm 2017.1 激活
- .NET Framework(一)
- python regularexpress1
- 集合的相关概念(开闭、有界无界、内点边界点等)
- 南大软院大神养成计划--CSS网页布局
- C++ 监视检测键盘输入 字符 并打印
- MySQL之高性能的索引策略(索引优化)
- 对LBP与HOG的理解
- java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0
- 【KITTI】KITTI数据集简介(三) — 图像数据image_2
- python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
- windows系统各个端口作用
- Python安装包报错ERROR: Could not find a version that satisfies the requirement XXX解决方法
- 写作系列之: UAV领域概述的参考文献集合