python 魔法方法加减乘除_【Python042--魔法方法:算术运算】

本文介绍了Python中的魔法方法在算术运算中的应用,包括加减乘除的自定义实现,避免无限递归的问题。同时探讨了工厂函数的概念,并提醒注意类的属性名与方法名不能相同。还详细列举了各种算术运算符对应的魔法方法。此外,文章阐述了鸭子类型的原理,通过实例展示了如何通过魔法方法实现字符串的减法和移位操作,并定义了一个类Nstr,使得实例对象间的运算变为计算字符串ASCII码之和。
摘要由CSDN通过智能技术生成

一、算术魔法方法的举例

1、加法(__add__)的算术运算调用减法(__sub__)的算术运算,减法(__sub__)的算术运算调用加法(__add__)的算术运算

class New_Init(int):

def __add__(self,other):return int.__sub__(self,other)

def __sub__(self,other):return int.__add__(self,other)>>> a = New_Init('5')>>> b = New_Init(6)>>> a+b-1

>>> a-b11

>>>

2、针对以上需求,现在要求不使用int方法进行运算

classTry_int(int):def __add__(self,other):return self+otherdef __sub__(self,other):return self+other>>> a = Try_int(5)>>> b = Try_int(6)>>> a+b

Traceback (most recent call last):

File"", line 1, in a+b

File"/Users/wufq/Desktop/加法算术运算.py", line 3, in __add__

return self+other

File"/Users/wufq/Desktop/加法算术运算.py", line 3, in __add__

return self+other

File"/Users/wufq/Desktop/加法算术运算.py", line 3, in __add__

return self+other

[Previous line repeated990more times]

RecursionError: maximum recursion depth exceeded#不使用int会使程序一直进行递归运算,导致内存不足

#程序改进

classTry_int(int):def __add__(self,other):return int(self)+int(other)def __sub__(self,othe

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值