大地郡主 发表于 2020-7-16 00:06:05

有关__new__参数的问题

请问为什么arg这个参数在 等于''时我传入数字他会报错,而我后面正确代码arg等于0,此时传入字符串不报错呢?

Twilight6 发表于 2020-7-16 00:06:06



上面的代码只完成了一半,在传入数字时这样子就会报错?

for each in start 当你传入数字时候,即 start 参数的值为一个数字,这里会报错

就算 for 循环不会报错,你的 ord() 函数也不能对整型使用

因为数字是不能 for 循环迭代,所以报错了

而字符串是可迭代对象,自然 for 循环一个字符串不会报错



大地郡主 发表于 2020-7-16 00:07:27

'''class Nint(int):
    def __new__(cls, start = ''):
      count = 0
      for each in start:
            count += ord(each)
      return count
   '''
#上面的代码只完成了一半,在传入数字时这样子就会报错

#正确代码
class Nint(int):
    def __new__(cls, arg=0):
      if isinstance(arg, str):
            count = 0
            for each in arg:
                count += ord(each)
            arg = total
      return int.__new__(cls, arg)
图片不知道为什么挂了。。。。

_2_ 发表于 2020-7-16 07:38:36

大地郡主 发表于 2020-7-16 00:07
'''class Nint(int):
    def __new__(cls, start = ''):
      count = 0


__new__(cls) 魔法方法是返回他本身(return int.__new(cls)),而不是一个 int(return count)

大地郡主 发表于 2020-7-16 08:58:16

犯了低级错误了,还是要认真,谢谢您!{:10_266:}
页: [1]
查看完整版本: 有关__new__参数的问题