lichanglin1987 发表于 2020-6-16 16:41:44

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


class Nstr:
    def __init__(self, arg=''):
      if isinstance(arg, str):
            self.total = 0
            for each in arg:
                self.total += ord(each)
请问这个arg = '' 是什么意思?

Twilight6 发表于 2020-6-16 16:43:58



请问这个arg = '' 是什么意思?

这就像 print() 的默认参数 end = '\n' 一样,你这里定义函数 arg 默认等于 空字符串

所以调用时候可以不用传参数,因为有默认值,如果你没有设置默认值那么直接调用会报错,必须传入赋值给 arg

lichanglin1987 发表于 2020-6-16 17:15:46

Twilight6 发表于 2020-6-16 16:43
这就像 print() 的默认参数 end = '\n' 一样,你这里定义函数 arg 默认等于 空字符串

所以调用 ...

def __init__(self, arg),这样可以吗 好像运行起来也是可以的

Twilight6 发表于 2020-6-16 17:19:44

lichanglin1987 发表于 2020-6-16 17:15
def __init__(self, arg),这样可以吗 好像运行起来也是可以的



是的但是你不传入参数就会报错 比如这样调用:
t = Nstr()

因为没有设置默认值

lichanglin1987 发表于 2020-6-16 17:25:35

Twilight6 发表于 2020-6-16 17:19
是的但是你不传入参数就会报错 比如这样调用:




懂了。谢谢

Twilight6 发表于 2020-6-16 17:28:37

lichanglin1987 发表于 2020-6-16 17:25
懂了。谢谢

客气了 ~ 加油吧!
页: [1]
查看完整版本: 42讲课后习题