|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
2. 定义一个类 Nstr,当该类的实例对象间发生的加、减、乘、除运算时,将该对象的所有字符串的 ASCII 码之和进行计算:
- >>> a = Nstr('FishC')
- >>> b = Nstr('love')
- >>> a + b
- 899
- >>> a - b
- 23
- >>> a * b
- 201918
- >>> a / b
- 1.052511415525114
- >>> a // b
- 1
复制代码
我的答案是:
- class Nstr(int):
- def __new__(cls,string):
- if isinstance(string,str):
- a=0
- for i in string:
- a+=ord(i)
- else:
- print('参数错误')
- return int.__new__(cls,a)
复制代码
小甲鱼的答案是:
- 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 __sub__(self, other):
- return self.total - other.total
- def __mul__(self, other):
- return self.total * other.total
- def __truediv__(self, other):
- return self.total / other.total
- def __floordiv__(self, other):
- return self.total // other.total
复制代码
我的答案和小甲鱼的答案区别在哪?我的答案有什么问题吗?
你的答案重新的是 __new__ 魔法方法,可以直接设置返回值
而且你的 Nstr 类继承了 int 父类,加、减、乘、除什么的都也一并继承了,不用你再去重新,比甲鱼哥的答案更加便捷
甲鱼哥的答案,没用继承 int ,所以所有的加、减、乘、除都要自己重写
总的来说,你的代码更加便捷、美观吧!
|
|