Python的运算符重载怎么实现

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的运算符重载怎么实现”有了更深的了解,不妨来实际操作一番吧!这里是恰卡编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

发布于 2022-02-07 23:11:09
收藏
分享
海报
0 条评论
41
上一篇:win10系统bitlocker加密密钥无法保存怎么解决 下一篇:怎么将Python代码打包成.exe可执行文件
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码