## 0 引言 运算符重载的作用是让用户定义的对象使用中缀运算符(如 + 和 |)或一元运算符(如 - 和 ~)。说得宽泛一些,在 Python 中,函数调用(())、属性访问(.)和元素访问 / 切片([])也是运算符。 ## 1 python支持重载的运算符 | 运算类型 | 对象在左侧 | 对象在右侧 | 复合赋值 | | ------------ | ------------ | ------------ | ------------ | | 加法 | __add__ | __radd__ | __iadd__ | | 减法 | __sub__ | __rsub__ | __isub__ | | 乘法 | __mul__ | __rmul__ | __imul__ | | 除法 | __truediv__ | __rdiv__ | __idiv__ | | 求余 | __mod__ | __rmod__ | __imod__ | 通过重写一些内置方法,实现了运算符的重载功能 ## 2 重载加减运算符 ``` python3 #ex0716.py 加法运算符重载和减法运算符重载的实现 class Computing: def __init__(self,value): self.value = value def __add__(self, other): lst = [] for i in self.value: lst.append(i+other) return lst def __sub__(self, other): lst = [] for i in self.value: lst.append(i-other) return lst c = Computing([-1,3,4,5]) print("+运算符重载后的列表",c+2) # +运算符重载后的列表 [1, 5, 6, 7] print("-运算符重载后的列表",c-2) # -运算符重载后的列表 [-3, 1, 2, 3] ``` ## 3 字符串相关运算符重载 重载__str__()和 __repr__()方法可以将对象转换为字符串的形式,在执行print()、str()、repr()等方法以及交互模式下直接打印对象时,会调用__str__()和 __repr__()方法。 __str__()和 __repr__()方法的区别是,只有print()、str()方法可以调用__str__()方法转换,而 __repr__()方法在多种操作下都能将对象转换为自定义的字符串形式。 ``` python3 代码如下: ```python class op(object): def __init__(self,x=0,y=0): self.x = x self.y = y def __str__(self): #重载__str__ return ("x={} y={}".format(self.x,self.y)) def __add__(self,other): print("对象在左侧") return op(self.x+other.x,self.y+other.y) def __radd__(self,other): print("对象在右侧") return op(self.x + other[0], self.y + other[1]) def __iadd__(self, other): print("+=运算") self.x += other.x self.y += other.y return self a = op(10,2) c = a + op(5,9) print("左侧:",c) # 10+5,2+9 c = [1,2]+a print("右侧",c) # 1+10,2+2 c += a print("+=",c) # 11+10,4+2 ``` ## 3 call运算符重载 "__call__" 方法是 Python 中类的特殊方法,当一个类的实例被“调用”时,就会自动触发这个方法。“调用”一个类的实例就是使用小括号 () 操作符。 ``` python3 class Adder: def __init__(self, value=0): self.data = value def __call__(self, x): return self.data + x add = Adder() print(add(1)) # 1 print(add(2)) # 2 ``` 最后编辑:2024年04月23日 ©著作权归作者所有 赞 0 分享
博主真是太厉害了!!!
不错不错,我喜欢看 https://www.ea55.com/
看的我热血沸腾啊https://www.ea55.com/
《回档08之女王上位记》短片剧高清在线免费观看:https://www.jgz518.com/xingkong/17438.html
《回档08之女王上位记》短片剧高清在线免费观看:https://www.jgz518.com/xingkong/17438.html
代码示例规范,注释详细,便于复现。
华纳企业账户开户步骤?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】【╃q 2704132802╃】
华纳东方明珠客服电话是多少?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】
华纳东方明珠开户专线联系方式?(??155--8729--1507?《?薇-STS5099】【?扣6011643?】
新盛开户前客服电话咨询材料清单【1558--7291-507薇同1】
新盛开户官方客服电话 【1558--7291-507 薇同1】
新盛开户业务办理电话 【1558--7291-507 薇同1】
新盛开户联系电话大全 【1558--7291-507 薇同1】
华纳圣淘沙开户步骤详解(183-8890-9465—?薇-STS5099【6011643】
华纳圣淘沙公司开户流程全解析(183-8890-9465—?薇-STS5099【6011643】
华纳圣淘沙公司账户注册指南(183-8890-9465—?薇-STS5099【6011643】
新手如何开通华纳圣淘沙公司账户(183-8890-9465—?薇-STS5099【6011643】
华纳圣淘沙企业开户标准流程(183-8890-9465—?薇-STS5099【6011643】
华纳圣淘沙公司开户:从零到一(183-8890-9465—?薇-STS5099【6011643】
官方指南:华纳圣淘沙公司开户流程(183-8890-9465—?薇-STS5099【6011643】
华纳圣淘沙公司开户流程说明书(183-8890-9465—?薇-STS5099【6011643】
《华纳圣淘沙公司开户流程全解析》→ 官方顾问一对一指导??? 安全联系:183第三段8890第四段9465
《华纳圣淘沙开户步骤详解》→ 」专属通道快速办理??? 安全联系:183第三段8890第四段9465
《华纳圣淘沙账户注册指南》→ 扫码获取完整资料清单?「微?? 安全联系:183第三段8890第四段9465
《新手开通华纳圣淘沙公司账户指南》→ 限时免费咨询开放??? 安全联系:183第三段8890第四段9465
《华纳圣淘沙企业开户标准流程》→ 资深顾问实时解答疑问??? 安全联系:183第三段8890第四段9465
《华纳圣淘沙开户步骤全景图》→ 点击获取极速开户方案??? 安全联系:183第三段8890第四段9465
《华纳圣淘沙账户创建全流程手册》→ 预约顾问免排队服务?9?? 安全联系:183第三段8890第四段9465 《从零开通华纳圣淘沙公司账户》→ 添加客服领取开户工具包?? 安全联系:183第三段8890第四段9465
《官方授权:华纳圣淘沙开户流程》→ 认证顾问全程代办?」?? 安全联系:183第三段8890第四段9465
《华纳圣淘沙开户说明书》→立即联系获取电子版文件??? 安全联系:183第三段8890第四段9465
外围空降怎么收费a0hk.cn