|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
动动手第2题:定义一个类 Nstr,当该类的实例对象间发生的加、减、乘、除运算时,将该对象的所有字符串的 ASCII 码之和进行计算:
我写出来的答案是:
class Nstr(str):
def __new__(self,string):
self.arg = 0
self.string = string
for each in self.string:
self.arg += ord(each)
return self.arg
参考答案给出的是:
class Nstr(int):
def __new__(cls, arg=0):
if isinstance(arg, str):
total = 0
for each in arg:
total += ord(each)
arg = total
return int.__new__(cls, arg)
请问下返回self.arg也是一个整形的对象,跟int.__new__(cls,arg)有什么区别呀?
在运算上你返回的self.arg是一个int类型的数,用来加减乘除肯定是没有问题,要说的话,你没有给他定义自己的类方法,所有当Nstr类对象实例化后实例对象是int类而不是Nstr类
第一种情况:
- >>> a = Nstr('hhh')
- >>> a
- 312
- >>> type(a)
- <class 'int'>
复制代码
答案:
- >>> a = Nstr('hhh')
- >>> a
- 312
- >>> type(a)
- <class '__main__.Nstr'>
复制代码
以上个人看法,再详细也说不出来了
|
|