python运算符重载是什么意思?怎样实现?
Admin 2021-05-29 群英技术资讯 1466 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python包装之对象处理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
这篇文章主要介绍了python 使用ctypes调用C/C++ dll详情,文章首先通过导入ctypes模块,加载C/C++ dll到python进程空间展开主题相关内容,需要的小伙伴可以参考一下
1.背景知识 阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号。一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,通俗的讲也就是按顺序从1乘到
这篇文章主要为大家介绍了python网络编程之进程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
Requests是一常用的http请求库,它使用python语言编写,可以方便地发送http请求,以及方便地处理响应结果,下面这篇文章主要给大家介绍了关于python中Requests请求的安装与常见用法的相关资料,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008