塞利格曼的狗 发表于 2020-4-10 21:31:39

python入门课程41讲

class Nint(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)

标黄色的部分是为什么呢?这个参数为什么要给它赋值?
标蓝色的部分为什么arg能属于字符串这个类型呢?

sunrise085 发表于 2020-4-10 22:33:46

先说黄色部分。这是带有默认值的参数,调用函数的时候,若没有给出这个参数,那这个参数的只就使用这个默认值。
再说蓝色部分。arg是传进来的参数,什么类型都有可能啊。

这个类是继承了int,然后若输入的参数是字符串,就把字符串的各个字符的ascii之和作为该数值。
class Nint(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)

print(Nint('10'))# 这一行 输出 97
print(Nint())   # 这一行输出 0
print (Nint(25))# 这一行输出 25

zltzlt 发表于 2020-4-11 08:17:31

arg 是带有默认值的参数,默认为 0 。

arg 可以是字符串,如果是,则执行 if 下面的代码
页: [1]
查看完整版本: python入门课程41讲