Python的运算符重载怎么实现
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"Python的运算符重载怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python的运算符重载怎么实现"吧!一、前言运算符重载:
千家信息网最后更新 2025年11月07日Python的运算符重载怎么实现
本篇内容主要讲解"Python的运算符重载怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python的运算符重载怎么实现"吧!
一、前言
运算符重载:为运算符定义方法
所谓重载,就是赋予新的含义同一个运算符可以有不同的功能
二、重载作用
让自定义的实例像内建对象一样进行运算符操作让程序简介易读对自定义对象将运算符赋予新的规则 运算符和特殊方法 运算符重载
# @function:运算符重载# @Description: 一只萤火虫class MyInteger: """ 创建一个自定义的整数类型 """ def __init__(self, data=0): # 1.如果传入的参数时是整数类型,那么直接赋值 # 2.如果传入的不是整数类型,则判断能够转化成整数,不能转换就赋初值为0 if isinstance(data, int): self.data = data elif isinstance(data, str) and data.isdecimal(): self.data = int(data) else: self.data = 0 def __add__(self, other): if isinstance(other, MyInteger): # 返回当前对象的副本 return MyInteger(self.data + other.data) # 相加的是MyInteger类型 elif isinstance(other, int): return MyInteger(self.data + other) # 相加的是整型 def __radd__(self, other): return self.__add__(other) def __eq__(self, other): if isinstance(other, MyInteger): return self.data == other.data elif isinstance(other, int): return self.data == other else: return False def __str__(self): """ 在打印、str(对象)时被自动调用 :return: 用来返回对象的可读字符串形式(适合普通用户阅读) """ return str(self.data) def __repr__(self): """ 用来将对象转换成供解释器读取的形式,用来阅读对象的底层继承关系及内存地址""" return "[自定义整数类型的值]:{} 地址:{}".format(self.data, id(self.data)) def __sub__(self, other): return MyInteger(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:一只萤火虫class MyList: def __init__(self, data=None): self.data = None if data is None: self.data = [] else: self.data = data def __getitem__(self, index): # 让本类的对象支持下标访问 if isinstance(index, int): return self.data[index] elif type(index) is slice: # 如果参数是切片类型 [10:30:2] print("切片的起始值:", index.start) print("切片的结束值:", index.stop) print("切片的步长:", index.stop) return self.data[index] def __setitem__(self, key, value): self.data[key] = value def __contains__(self, item): print("判断传入的", item, "是否在列表元素中") return self.data.__contains__(item) def __str__(self): return str(self.data) def pop(self, index=-1): # 默认删除并返回最后一个元素 return self.data.pop(index) def __delitem__(self, key): del self.data[key] def append(self, item): self.data.append(item)if __name__ == '__main__': my_list1 = MyList([item for item in range(10)]) my_list1[1] = 1111 print("显示列表:", my_list1) print("列表的切片:", my_list1[2:8:2]) print("删除并返回最后一个元素:", my_list1.pop()) del my_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的运算符重载怎么实现"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
运算符
运算
对象
类型
整数
元素
下标
方法
内容
参数
地址
形式
程序
萤火
萤火虫
步长
学习
起始
不同
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
GBASE数据库的字段注释
青岛服务器机柜哪家好
郑州公交打造网络安全主题线路
软件开发的集成费
php数据库扩展
Amd cpu服务器
学计算机网络技术找工作
综合业务网管工作站属于服务器吗
ipadvpn服务器
煎饼果子软件开发
公安部网络安全保卫局王爽
node数据库一直连接不上
数据库课程设计答辩问题
labview数据库应用
软件开发dfx
迅蓉网络技术工作室
网络技术工作畅想
千匠网络技术有限公司
微信小程序数据库后台
北京网络技术服务成交价
jobready软件开发
赛门铁克服务器版
工行杭州软件开发中心 知乎
收女兵学计算机网络技术怎样
杭州交友软件开发服务商
商业科技互联网
网络安全教育视频小学生录制
dell服务器经常自启动
网络安全知识教育平台登录
南郑天气预报软件开发