Python的运算符重载怎么实现
Python的运算符重载怎么实现
本篇内容主要讲解“Python的运算符重载怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的运算符重载怎么实现”吧!
一、前言
运算符重载:为运算符定义方法
所谓重载,就是赋予新的含义同一个运算符可以有不同的功能
二、重载作用
让自定义的实例像内建对象一样进行运算符操作让程序简介易读对自定义对象将运算符赋予新的规则 运算符和特殊方法 运算符重载
#@function:运算符重载#@Description:一只萤火虫classMyInteger:"""创建一个自定义的整数类型"""def__init__(self,data=0):#1.如果传入的参数时是整数类型,那么直接赋值#2.如果传入的不是整数类型,则判断能够转化成整数,不能转换就赋初值为0ifisinstance(data,int):self.data=dataelifisinstance(data,str)anddata.isdecimal():self.data=int(data)else:self.data=0def__add__(self,other):ifisinstance(other,MyInteger):#返回当前对象的副本returnMyInteger(self.data+other.data)#相加的是MyInteger类型elifisinstance(other,int):returnMyInteger(self.data+other)#相加的是整型def__radd__(self,other):returnself.__add__(other)def__eq__(self,other):ifisinstance(other,MyInteger):returnself.data==other.dataelifisinstance(other,int):returnself.data==otherelse:returnFalsedef__str__(self):"""在打印、str(对象)时被自动调用:return:用来返回对象的可读字符串形式(适合普通用户阅读)"""returnstr(self.data)def__repr__(self):"""用来将对象转换成供解释器读取的形式,用来阅读对象的底层继承关系及内存地址"""return"[自定义整数类型的值]:{}地址:{}".format(self.data,id(self.data))def__sub__(self,other):returnMyInteger(self.data-other.data)def__del__(self):print("当前对象:"+str(self.data)+"被销毁")#程序运行完之后自动被销毁if__name__=='__main__':num1=MyInteger(123)num2=MyInteger(321)num3=num1+num2#等价于:num3=num1.__add__(num2)print("num3=",num3)num4=MyInteger("123")num5=num4+124#在自定义对象的右侧相加整数类型num6=124+num4#在自定义对象的左侧相加整数类型print("num5=",num5,"num6=",num6)num7=MyInteger(1024)num8=MyInteger(1024)print("num7==num8:",num7==num8)
三、自定义列表
#@function:自定义列表#@Description:一只萤火虫classMyList:def__init__(self,data=None):self.data=NoneifdataisNone:self.data=[]else:self.data=datadef__getitem__(self,index):#让本类的对象支持下标访问ifisinstance(index,int):returnself.data[index]eliftype(index)isslice:#如果参数是切片类型[10:30:2]print("切片的起始值:",index.start)print("切片的结束值:",index.stop)print("切片的步长:",index.stop)returnself.data[index]def__setitem__(self,key,value):self.data[key]=valuedef__contains__(self,item):print("判断传入的",item,"是否在列表元素中")returnself.data.__contains__(item)def__str__(self):returnstr(self.data)defpop(self,index=-1):#默认删除并返回最后一个元素returnself.data.pop(index)def__delitem__(self,key):delself.data[key]defappend(self,item):self.data.append(item)if__name__=='__main__':my_list1=MyList([itemforiteminrange(10)])my_list1[1]=1111print("显示列表:",my_list1)print("列表的切片:",my_list1[2:8:2])print("删除并返回最后一个元素:",my_list1.pop())delmy_list1[1]print("删除指定下标的元素:",my_list1)输出结果:显示列表:[0,1111,2,3,4,5,6,7,8,9]切片的起始值:2切片的结束值:8切片的步长:8列表的切片:[2,4,6]删除并返回最后一个元素:9删除指定下标的元素:[0,2,3,4,5,6,7,8]
到此,相信大家对“Python的运算符重载怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
推荐阅读
-
python(中无效的十进制怎么解决 python怎么转换进制)
python怎么转换进制?Python执行二进制转换:1.十进制到二进制(bin)首先,让让我们看看如何将十进制转换成二进制。我...
-
python怎么清除完全相同的行(python splte如何分隔有多个相同符号的str)
pythonsplte如何分隔有多个相同符号的str?str你的string内容str_(相同的符号)执行完了以后再在相同符号的...
-
python(编程控制电脑关机 如何控制电脑关机)
如何控制电脑关机?可以在电脑的运行窗口中输入输入公式,给电脑可以设置自动关机。1.按开快捷键winr然后打开运行窗口。2.在运行窗...
-
python中的特殊标识符(python 中 标识符中可以有逗号吗)
python中标识符中可以有逗号吗?在python语言中合法的标识符是字母、数字以及_,所以我合法的标识符中肯定不能有逗号if...
-
python(excel 提取数据写入新表 python导入excel数据找不到工作簿)
python导入excel数据找不到工作簿?我可以导入数据后找不到工作,不是因为他的工作没有被转移。什么软件可提取并合并Exce...
-
python中字典定义的四种方法(python global关键字的用法详解)
pythonglobal关键字的用法详解?global标志实际上是目的是提示python讲解器,说被其修饰的变量是全局变量。这样...
-
python(array用法 python如何对两个数组做差处理)
python如何对两个数组做差处理?Python中的列表中的元素肯定不能真接相加,减。t最佳的位置的是将列表装换成Python中的...
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...