鱼C论坛

 找回密码
 立即注册
查看: 736|回复: 5

[已解决]__new__

[复制链接]
发表于 2019-5-23 22:27:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Nstr(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)

问题:在init中要把其他的变量整一个 self.name = name
为啥在new中不用 self.arg之类的
最佳答案
2019-5-24 22:23:31
小白码农超 发表于 2019-5-24 21:04
那我怎么能使用new当中的arg呢?

在 __init__ 里声明变量(要把 arg 传入 init)
self.arg = arg
然后在其他函数中将 self 当作参数传入就可以使用
self.arg 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-5-23 23:04:21 | 显示全部楼层
因为 self 是 new 之后才出现的,也是因为 new 才出现的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-24 09:09:16 | 显示全部楼层
°蓝鲤歌蓝 发表于 2019-5-23 23:04
因为 self 是 new 之后才出现的,也是因为 new 才出现的

那如果我后面直接写一个def count(self)这样前面new的arg会直接传递给self么,还是要写一个self.arg = arg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 18:37:56 | 显示全部楼层
小白码农超 发表于 2019-5-24 09:09
那如果我后面直接写一个def count(self)这样前面new的arg会直接传递给self么,还是要写一个self.arg = ar ...

都不行。
1.__new__的参数不会传给 self __new__ 函数返回的值才是 self。
2. __new__里面就不能有 self.xxx = xxx 这样的赋值语句,因为 self 是 __new__函数执行完之后才产生的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-24 21:04:47 From FishC Mobile | 显示全部楼层
°蓝鲤歌蓝 发表于 2019-5-24 18:37
都不行。
1.__new__的参数不会传给 self __new__ 函数返回的值才是 self。
2. __new__里面就不能有 sel ...

那我怎么能使用new当中的arg呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-5-24 22:23:31 | 显示全部楼层    本楼为最佳答案   
小白码农超 发表于 2019-5-24 21:04
那我怎么能使用new当中的arg呢?

在 __init__ 里声明变量(要把 arg 传入 init)
self.arg = arg
然后在其他函数中将 self 当作参数传入就可以使用
self.arg 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 22:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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