鱼C论坛

 找回密码
 立即注册
查看: 1396|回复: 4

[已解决]有关__new__参数的问题

[复制链接]
发表于 2020-7-16 00:06:05 | 显示全部楼层 |阅读模式
2鱼币
请问为什么arg这个参数在 等于''时我传入数字他会报错,而我后面正确代码arg等于0,此时传入字符串不报错呢?
最佳答案
2020-7-16 00:06:06


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


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

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

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

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



最佳答案

查看完整内容

for each in start 当你传入数字时候,即 start 参数的值为一个数字,这里会报错 就算 for 循环不会报错,你的 ord() 函数也不能对整型使用 因为数字是不能 for 循环迭代,所以报错了 而字符串是可迭代对象,自然 for 循环一个字符串不会报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 00:06:06 | 显示全部楼层    本楼为最佳答案   


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


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

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

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

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



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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)
图片不知道为什么挂了。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-16 07:38:36 From FishC Mobile | 显示全部楼层
大地郡主 发表于 2020-7-16 00:07
'''class Nint(int):
    def __new__(cls, start = ''):
        count = 0

__new__(cls) 魔法方法是返回他本身(return int.__new(cls)),而不是一个 int(return count)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-16 08:58:16 | 显示全部楼层
犯了低级错误了,还是要认真,谢谢您!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表