python运算符重载是什么意思?怎样实现?
Admin 2021-05-29 群英技术资讯 714 次浏览
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 "[自定义整数类型的值]:{}\t地址:{}".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, "\t 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运算符重载的操作介绍,上述示例对大家理解python运算符重载有一定的帮助,大家可以看看,希望大家阅读完这篇文章能有所收获。想要了解更多python运算符重载的内容大家可以继续关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
如果要考察某公司的牛奶产品质量,可以从100袋牛奶中抽取30袋,在随机数表中选中一数,并用向上、下、左、右不同的读法组成30个数,并按牛奶的标号进行检测,虽然麻烦,但很常用。在日常生活中,随机数起着很大的作用,所以很多人会专门去寻找随机数生成器。
python的安全问题有哪些?本文就给大家来聊一聊python的安全问题,例如输入注入、assert 语句、计时攻击、临时文件等等这些都是什么安全问题呢?如何避免或解决?接下来我们具体的了解看看。
通过获取子图的label和线型来合并图例注意添加label#导入数据(读者可忽略)pre_lp=total_res#组合模型true=diff1[-pre_day:]#真实值pre_ph=result
递归函数是直接调用自己或通过一系列语句间接调用自己的函数。递归在程序设计有着举足轻重的作用,在很多情况下,借助递归可以优雅的解决问题。虽然使用递归可以快速的解决一些难题,但由于递归的抽象性,使递归难以掌握。为了更好的理解递归函数背后的思想,本节主要通过可视化方式来了解递归函数的执行步骤。
这篇文章主要为大家详细介绍了python实现双链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008