千家信息网

Python的运算符重载怎么实现

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,本篇内容主要讲解"Python的运算符重载怎么实现",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Python的运算符重载怎么实现"吧!一、前言运算符重载:
千家信息网最后更新 2025年02月12日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安全错误 数据库的锁怎样保障安全 幻塔为什么会一直连接不上服务器 服务器补丁管理软件 国家网络安全宣传周证书有啥用 数据库集群注意事项 中软国际网络安全具备如下 河南net软件开发费用是多少 魔兽世界新服务器多久开 数据库字段删除后如何恢复 seer数据库账号申请 公安县中小学生网络安全 桓台在线考试软件开发公司 非x86服务器 上海易途科技软件开发工资待遇 企业网络安全实战详解下载 智联招聘网络安全 工资 东营织梦怎么修改数据库表前缀 数据库中all是干嘛用的 游戏服务器拆解 x86服务器 配置 网络安全黑客实验报告 农兽药数据库 陕西软件开发人材引进 网络安全宣传周中南财经政法大学 服务器如何返回json数据 网络安全能力一百强评选依据 怎么设置密钥管理服务器名称 奉贤区信息化软件开发诚信合作 如何建成云服务器 网络安全工程师文化 idea怎样生成数据库表结构图
0