千家信息网

Python的运算符重载怎么实现

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Python的运算符重载怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python的运算符重载怎么实现"吧!一、前言运算符重载:
千家信息网最后更新 2026年10月31日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安全错误 数据库的锁怎样保障安全 互联网科技名片 深圳恒合互联网络科技有限公司 科技互联网项目 中资互联网科技 互联网 科技创新 互联网与新科技 哈尔滨新华互联网科技学院 科技与互联网哪个更好 互联网大会黑科技排名 荆州市昕露互联网络科技有限公司 米聚互联网科技南京有限公司排面 威龙国际互联网科技公司 群盈汇互联网科技有限公司 中国互联网有什么科技 梅州GM互联网络科技有限公司 艺电能源互联网科技有限公司招聘 恒生科技指数 中概互联网 保山浩联互联网科技有限公司 黑龙江互联网科技公司 互联网企业和网络科技有限公司 礼当家互联网科技 互联网科技咨询 重庆威客帮互联网科技 智腾互联网科技有限公司 中科明德北京互联网科技 深圳互联网科技的发展 世界互联网科技成果奖 恒生科技指数 中概互联网 互联网科技大佬云集 平安好医生打造互联网科技医疗
0