关于递归的问题
class Nstr:def __init__(self, arg=''):
if isinstance(arg, str):
self.total = 0
for each in arg:
self.total += ord(each)
else:
print("参数错误!")
def __add__(self, other):
return self.total + other.total
这样写为什么不会递归
而象 def __add__(self,other)
return self +other会递归 本帖最后由 sunrise085 于 2020-4-26 10:08 编辑
def __add__(self,other)是对加号"+"的重载。
当遇到两个Nstr类的对象执行+操作的时候,会自动调用__add__函数。
第一种写法,调用到该重载函数的时候,执行的操作是self.total + other.total,是对该类的成员变量total相加,total应该是字符串转化的整型。int本身就可以直接相加,因为类有__add__函数。
第二种写法,调用到该重载函数的时候,执行的操作是self+other,仍然是该类的两个对象的相加,会再次调用该重载函数,以至于递归调用,陷入死循环。 本帖最后由 sunrise085 于 2020-4-26 10:17 编辑
你的这个问题和另外一个减法帖子中的类不一样啊。
这个类没有继承str类。
继承和没有继承差别很大的。
若是继承了str,该类的对象就是字符串,没有继承,该类对象就仅仅是该类的对象了
页:
[1]