42讲课后动手题 小疑问
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
other.total的total是什么意思 本帖最后由 jackz007 于 2020-11-19 14:38 编辑
wuyanzulqq 发表于 2020-11-19 14:33
就是万一有第三个代表class类的实例呢
没有问题呀, a + b + c + d 都行呀,但是,要知道,这些数学运算的两边永远只有两个对象。 本帖最后由 jackz007 于 2020-11-19 12:49 编辑
total 是 Nstr 类的一个属性,记录的是对象字符串中每一个字符编码值的总和。
Nstr 类中定义的方法都是魔法方法,规定了两个对象在进行加、减、乘、除以及地板除运算时所采用的计算方法。这些方法的输入参数都是两个对象,其中,self . total是其中一个对象的 total 属性,other .total 则是另一个对象的 total 属性值。 jackz007 发表于 2020-11-19 12:20
total 是 Nstr 类的一个属性,记录的是对象字符串中每一个字符编码值的总和。
Nstr 类中 ...
那也就是说上面定义的这个属性self.total跟下面返回的self.total只是同名吧?{:10_256:} 本帖最后由 jackz007 于 2020-11-19 14:17 编辑
wuyanzulqq 发表于 2020-11-19 13:35
那也就是说上面定义的这个属性self.total跟下面返回的self.total只是同名吧?
看来你完全没有理解类和对象的概念,self 和 other 分别代表两个对象,self . total 是一个对象的属性,other . total 是另一个对象的属性。
如果 "人" 是一个类的话,每个 "人" 都有一颗心脏,就是说,心脏是 "人" 这个类的一个共有(或必有)属性,你、我都是人类的一员(实例),其实就是 "人" 这个类的一个对象,所以,你、我也都有一颗心脏,可是,你的心脏肯定不是我的心脏,那么,如果 self . total 是我的心脏的话,那么, other . total 就是你的心脏了。
试试下面的代码可以加深理解
#coding:gbk
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
a = Nstr('abc') # 用到 __init__(self, arg='')
b = Nstr('ABC') # 用到 __init__(self, arg='')
print('a + b =' , a + b) # a . total +b . total , 用到 __add__(self, other)
print('a - b =' , a - b) # a . total -b . total , 用到 __sub__(self, other)
print('a * b =' , a * b) # a . total *b . total , 用到 __mul__(self, other)
print('a / b =' , a / b) # a . total /b . total , 用到 __truediv__(self, other)
print('a // b =' , a // b) # a . total // b . total , 用到 __floordiv__(self, other)
代码中的对象 a 对应魔法方法中的 self,对象 b 对应 other 。 jackz007 发表于 2020-11-19 13:50
看来你完全没有理解类和对象的概念,self 和 other 分别代表两个对象,self . total 是一个对 ...
那如果有两个以上的对象呢 jackz007 发表于 2020-11-19 13:50
看来你完全没有理解类和对象的概念,self 和 other 分别代表两个对象,self . total 是一个对 ...
就是万一有第三个代表class类的实例呢 jackz007 发表于 2020-11-19 13:50
看来你完全没有理解类和对象的概念,self 和 other 分别代表两个对象,self . total 是一个对 ...
如何表达呢 OKOK,懂了{:10_279:}
页:
[1]