a1053828045 发表于 2020-6-17 11:34:40

运算重载符

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

   
这里为什么要用isinstance 判断呢????求大佬解释解释{:5_94:} {:5_94:}

Twilight6 发表于 2020-6-17 11:36:22

本帖最后由 Twilight6 于 2020-6-17 11:39 编辑


isinstance(obj,classinfo):如果对象obj是类classinfo的实例则返回True,否则返回False

就是防止你输入的不是字符串呀,因为我们重写的这个类功能就是将字符串能够进行相加减

所以要通过 isinstance 判断是否为字符串才能循环遍历进行 ASCII 码值相加

qiuyouzhi 发表于 2020-6-17 11:36:31

不是字符串无法用for遍历呀

_2_ 发表于 2020-6-17 12:30:42

qiuyouzhi 发表于 2020-6-17 11:36
不是字符串无法用for遍历呀

……关键我还没看懂这段代码是干什么的

qiuyouzhi 发表于 2020-6-17 12:37:08

_2_ 发表于 2020-6-17 12:30
……关键我还没看懂这段代码是干什么的

就是把一个字符串的每个字符的ASCII值加起来

a1053828045 发表于 2020-6-17 15:18:33

Twilight6 发表于 2020-6-17 11:36
就是防止你输入的不是字符串呀,因为我们重写的这个类功能就是将字符串能够进行相加减

所以要通过 ...

懂了懂了感谢大佬

Twilight6 发表于 2020-6-17 15:18:51

a1053828045 发表于 2020-6-17 15:18
懂了懂了感谢大佬

客气客气~~~加油!

a1053828045 发表于 2020-6-17 15:19:11

qiuyouzhi 发表于 2020-6-17 12:37
就是把一个字符串的每个字符的ASCII值加起来

{:5_110:}感谢
页: [1]
查看完整版本: 运算重载符